TPTP Problem File: DAT256^1.p

View Solutions - Solve Problem

%------------------------------------------------------------------------------
% File     : DAT256^1 : TPTP v8.2.0. Released v7.0.0.
% Domain   : Data Structures
% Problem  : Data structure for translators from streams to streams 83
% Version  : [Bla16] axioms : Especial.
% English  :

% Refs     : [BH+14] Blanchette et al. (2014), Truly Modular (Co)datatypes
%          : [RB15]  Reynolds & Blanchette (2015), A Decision Procedure for
%          : [Bla16] Blanchette (2016), Email to Geoff Sutcliffe
% Source   : [Bla16]
% Names    : stream_processor__83.p [Bla16]

% Status   : Theorem
% Rating   : 1.00 v7.1.0
% Syntax   : Number of formulae    :  331 ( 175 unt;  71 typ;   0 def)
%            Number of atoms       :  519 ( 338 equ;   4 cnn)
%            Maximal formula atoms :   17 (   1 avg)
%            Number of connectives : 6224 (  70   ~;   6   |;  43   &;5893   @)
%                                         (   0 <=>; 212  =>;   0  <=;   0 <~>)
%            Maximal formula depth :   28 (   8 avg)
%            Number of types       :    4 (   3 usr)
%            Number of type conns  :  555 ( 555   >;   0   *;   0   +;   0  <<)
%            Number of symbols     :   72 (  68 usr;   8 con; 0-8 aty)
%            Number of variables   : 1658 ( 157   ^;1361   !;  22   ?;1658   :)
%                                         ( 118  !>;   0  ?*;   0  @-;   0  @+)
% SPC      : TH1_THM_EQU_NAR

% Comments : This file was generated by Isabelle (most likely Sledgehammer)
%            2016-07-13 14:39:23.376
%------------------------------------------------------------------------------
%----Could-be-implicit typings (9)
thf(ty_t_Stream__Processor__Mirabelle__rrumbueyrq_Osp_092_060_094sub_062_092_060nu_062,type,
    stream1273403375_sp_nu: $tType > $tType > $tType ).

thf(ty_t_Stream__Processor__Mirabelle__rrumbueyrq_Osp_092_060_094sub_062_092_060mu_062,type,
    stream901396144_sp_mu: $tType > $tType > $tType > $tType ).

thf(ty_t_Product__Type_Oprod,type,
    product_prod: $tType > $tType > $tType ).

thf(ty_t_Stream_Ostream,type,
    stream: $tType > $tType ).

thf(ty_t_Set_Oset,type,
    set: $tType > $tType ).

thf(ty_t_itself,type,
    itself: $tType > $tType ).

thf(ty_tf_c,type,
    c: $tType ).

thf(ty_tf_b,type,
    b: $tType ).

thf(ty_tf_a,type,
    a: $tType ).

%----Explicit typings (62)
thf(sy_c_BNF__Def_Oconvol,type,
    bNF_convol: 
      !>[A: $tType,B: $tType,C: $tType] : ( ( A > B ) > ( A > C ) > A > ( product_prod @ B @ C ) ) ).

thf(sy_c_BNF__Def_OfstOp,type,
    bNF_fstOp: 
      !>[A: $tType,B: $tType,C: $tType] : ( ( A > B > $o ) > ( B > C > $o ) > ( product_prod @ A @ C ) > ( product_prod @ A @ B ) ) ).

thf(sy_c_Basic__BNFs_Opred__fun,type,
    basic_pred_fun: 
      !>[A: $tType,B: $tType] : ( ( A > $o ) > ( B > $o ) > ( A > B ) > $o ) ).

thf(sy_c_Fun_Ocomp,type,
    comp: 
      !>[B: $tType,C: $tType,A: $tType] : ( ( B > C ) > ( A > B ) > A > C ) ).

thf(sy_c_Fun__Def_Orp__inv__image,type,
    fun_rp_inv_image: 
      !>[A: $tType,B: $tType] : ( ( product_prod @ ( set @ ( product_prod @ A @ A ) ) @ ( set @ ( product_prod @ A @ A ) ) ) > ( B > A ) > ( product_prod @ ( set @ ( product_prod @ B @ B ) ) @ ( set @ ( product_prod @ B @ B ) ) ) ) ).

thf(sy_c_HOL_Oundefined,type,
    undefined: 
      !>[A: $tType] : A ).

thf(sy_c_If,type,
    if: 
      !>[A: $tType] : ( $o > A > A > A ) ).

thf(sy_c_Product__Type_OPair,type,
    product_Pair: 
      !>[A: $tType,B: $tType] : ( A > B > ( product_prod @ A @ B ) ) ).

thf(sy_c_Product__Type_Oapfst,type,
    product_apfst: 
      !>[A: $tType,C: $tType,B: $tType] : ( ( A > C ) > ( product_prod @ A @ B ) > ( product_prod @ C @ B ) ) ).

thf(sy_c_Product__Type_Ocurry,type,
    product_curry: 
      !>[A: $tType,B: $tType,C: $tType] : ( ( ( product_prod @ A @ B ) > C ) > A > B > C ) ).

thf(sy_c_Product__Type_Ointernal__case__prod,type,
    produc2004651681e_prod: 
      !>[A: $tType,B: $tType,C: $tType] : ( ( A > B > C ) > ( product_prod @ A @ B ) > C ) ).

thf(sy_c_Product__Type_Oold_Oprod_Orec__prod,type,
    product_rec_prod: 
      !>[A: $tType,B: $tType,T: $tType] : ( ( A > B > T ) > ( product_prod @ A @ B ) > T ) ).

thf(sy_c_Product__Type_Oprod_Ocase__prod,type,
    product_case_prod: 
      !>[A: $tType,B: $tType,C: $tType] : ( ( A > B > C ) > ( product_prod @ A @ B ) > C ) ).

thf(sy_c_Product__Type_Oprod_Ofst,type,
    product_fst: 
      !>[A: $tType,B: $tType] : ( ( product_prod @ A @ B ) > A ) ).

thf(sy_c_Product__Type_Oprod_Osnd,type,
    product_snd: 
      !>[A: $tType,B: $tType] : ( ( product_prod @ A @ B ) > B ) ).

thf(sy_c_Pure_Otype,type,
    type: 
      !>[A: $tType] : ( itself @ A ) ).

thf(sy_c_Relation_Oinv__image,type,
    inv_image: 
      !>[B: $tType,A: $tType] : ( ( set @ ( product_prod @ B @ B ) ) > ( A > B ) > ( set @ ( product_prod @ A @ A ) ) ) ).

thf(sy_c_Set_OCollect,type,
    collect: 
      !>[A: $tType] : ( ( A > $o ) > ( set @ A ) ) ).

thf(sy_c_Stream_Osdrop__while,type,
    sdrop_while: 
      !>[A: $tType] : ( ( A > $o ) > ( stream @ A ) > ( stream @ A ) ) ).

thf(sy_c_Stream_Osfilter,type,
    sfilter: 
      !>[A: $tType] : ( ( A > $o ) > ( stream @ A ) > ( stream @ A ) ) ).

thf(sy_c_Stream_Osinterleave,type,
    sinterleave: 
      !>[A: $tType] : ( ( stream @ A ) > ( stream @ A ) > ( stream @ A ) ) ).

thf(sy_c_Stream_Osmap2,type,
    smap2: 
      !>[A: $tType,B: $tType,C: $tType] : ( ( A > B > C ) > ( stream @ A ) > ( stream @ B ) > ( stream @ C ) ) ).

thf(sy_c_Stream_Osmember,type,
    smember: 
      !>[A: $tType] : ( A > ( stream @ A ) > $o ) ).

thf(sy_c_Stream_Ostream_OSCons,type,
    sCons: 
      !>[A: $tType] : ( A > ( stream @ A ) > ( stream @ A ) ) ).

thf(sy_c_Stream_Ostream_Ocase__stream,type,
    case_stream: 
      !>[A: $tType,B: $tType] : ( ( A > ( stream @ A ) > B ) > ( stream @ A ) > B ) ).

thf(sy_c_Stream_Ostream_Ocorec__stream,type,
    corec_stream: 
      !>[C: $tType,A: $tType] : ( ( C > A ) > ( C > $o ) > ( C > ( stream @ A ) ) > ( C > C ) > C > ( stream @ A ) ) ).

thf(sy_c_Stream_Ostream_Opred__stream,type,
    pred_stream: 
      !>[A: $tType] : ( ( A > $o ) > ( stream @ A ) > $o ) ).

thf(sy_c_Stream_Ostream_Oshd,type,
    shd: 
      !>[A: $tType] : ( ( stream @ A ) > A ) ).

thf(sy_c_Stream_Ostream_Osmap,type,
    smap: 
      !>[A: $tType,Aa: $tType] : ( ( A > Aa ) > ( stream @ A ) > ( stream @ Aa ) ) ).

thf(sy_c_Stream_Ostream_Ostl,type,
    stl: 
      !>[A: $tType] : ( ( stream @ A ) > ( stream @ A ) ) ).

thf(sy_c_Stream_Ostream__all,type,
    stream_all: 
      !>[A: $tType] : ( ( A > $o ) > ( stream @ A ) > $o ) ).

thf(sy_c_Stream_Ostreams,type,
    streams: 
      !>[A: $tType] : ( ( set @ A ) > ( set @ ( stream @ A ) ) ) ).

thf(sy_c_Stream_Ostreamsp,type,
    streamsp: 
      !>[A: $tType] : ( ( A > $o ) > ( stream @ A ) > $o ) ).

thf(sy_c_Stream_Oszip,type,
    szip: 
      !>[A: $tType,B: $tType] : ( ( stream @ A ) > ( stream @ B ) > ( stream @ ( product_prod @ A @ B ) ) ) ).

thf(sy_c_Stream__Processor__Mirabelle__rrumbueyrq_Ocopy,type,
    stream2017582925e_copy: 
      !>[A: $tType] : ( stream1273403375_sp_nu @ A @ A ) ).

thf(sy_c_Stream__Processor__Mirabelle__rrumbueyrq_Orun_092_060_094sub_062_092_060mu_062,type,
    stream5064451run_mu: 
      !>[A: $tType,B: $tType,C: $tType] : ( ( stream901396144_sp_mu @ A @ B @ C ) > ( stream @ A ) > ( product_prod @ ( product_prod @ B @ C ) @ ( stream @ A ) ) ) ).

thf(sy_c_Stream__Processor__Mirabelle__rrumbueyrq_Orun_092_060_094sub_062_092_060nu_062,type,
    stream377071682run_nu: 
      !>[A: $tType,B: $tType] : ( ( stream1273403375_sp_nu @ A @ B ) > ( stream @ A ) > ( stream @ B ) ) ).

thf(sy_c_Stream__Processor__Mirabelle__rrumbueyrq_Osp_092_060_094sub_062_092_060mu_062_OGet,type,
    stream1294929701mu_Get: 
      !>[A: $tType,B: $tType,C: $tType] : ( ( A > ( stream901396144_sp_mu @ A @ B @ C ) ) > ( stream901396144_sp_mu @ A @ B @ C ) ) ).

thf(sy_c_Stream__Processor__Mirabelle__rrumbueyrq_Osp_092_060_094sub_062_092_060mu_062_OPut,type,
    stream1370332830mu_Put: 
      !>[B: $tType,C: $tType,A: $tType] : ( B > C > ( stream901396144_sp_mu @ A @ B @ C ) ) ).

thf(sy_c_Stream__Processor__Mirabelle__rrumbueyrq_Osp_092_060_094sub_062_092_060mu_062_Omap__sp_092_060_094sub_062_092_060mu_062,type,
    stream1058219438_sp_mu: 
      !>[B: $tType,Ba: $tType,C: $tType,Ca: $tType,A: $tType] : ( ( B > Ba ) > ( C > Ca ) > ( stream901396144_sp_mu @ A @ B @ C ) > ( stream901396144_sp_mu @ A @ Ba @ Ca ) ) ).

thf(sy_c_Stream__Processor__Mirabelle__rrumbueyrq_Osp_092_060_094sub_062_092_060mu_062_Opred__sp_092_060_094sub_062_092_060mu_062,type,
    stream123009735_sp_mu: 
      !>[A: $tType,B: $tType,E: $tType] : ( ( A > $o ) > ( B > $o ) > ( stream901396144_sp_mu @ E @ A @ B ) > $o ) ).

thf(sy_c_Stream__Processor__Mirabelle__rrumbueyrq_Osp_092_060_094sub_062_092_060mu_062_Orec__sp_092_060_094sub_062_092_060mu_062,type,
    stream674629690_sp_mu: 
      !>[A: $tType,B: $tType,C: $tType,G: $tType] : ( ( ( A > ( product_prod @ ( stream901396144_sp_mu @ A @ B @ C ) @ G ) ) > G ) > ( B > C > G ) > ( stream901396144_sp_mu @ A @ B @ C ) > G ) ).

thf(sy_c_Stream__Processor__Mirabelle__rrumbueyrq_Osp_092_060_094sub_062_092_060mu_062__comp,type,
    stream1747196112u_comp: 
      !>[A: $tType,B: $tType,C: $tType,D: $tType] : ( ( stream901396144_sp_mu @ A @ B @ C ) > ( stream901396144_sp_mu @ D @ A @ ( stream1273403375_sp_nu @ D @ A ) ) > ( stream901396144_sp_mu @ D @ B @ ( product_prod @ C @ ( stream1273403375_sp_nu @ D @ A ) ) ) ) ).

thf(sy_c_Stream__Processor__Mirabelle__rrumbueyrq_Osp_092_060_094sub_062_092_060mu_062__comp__rel,type,
    stream592421929mp_rel: 
      !>[A: $tType,B: $tType,C: $tType,D: $tType] : ( ( product_prod @ ( stream901396144_sp_mu @ A @ B @ C ) @ ( stream901396144_sp_mu @ D @ A @ ( stream1273403375_sp_nu @ D @ A ) ) ) > ( product_prod @ ( stream901396144_sp_mu @ A @ B @ C ) @ ( stream901396144_sp_mu @ D @ A @ ( stream1273403375_sp_nu @ D @ A ) ) ) > $o ) ).

thf(sy_c_Stream__Processor__Mirabelle__rrumbueyrq_Osp_092_060_094sub_062_092_060nu_062_OIn,type,
    stream1686501333_nu_In: 
      !>[A: $tType,B: $tType] : ( ( stream901396144_sp_mu @ A @ B @ ( stream1273403375_sp_nu @ A @ B ) ) > ( stream1273403375_sp_nu @ A @ B ) ) ).

thf(sy_c_Stream__Processor__Mirabelle__rrumbueyrq_Osp_092_060_094sub_062_092_060nu_062_Ocase__sp_092_060_094sub_062_092_060nu_062,type,
    stream1502363800_sp_nu: 
      !>[A: $tType,B: $tType,C: $tType] : ( ( ( stream901396144_sp_mu @ A @ B @ ( stream1273403375_sp_nu @ A @ B ) ) > C ) > ( stream1273403375_sp_nu @ A @ B ) > C ) ).

thf(sy_c_Stream__Processor__Mirabelle__rrumbueyrq_Osp_092_060_094sub_062_092_060nu_062_Oout,type,
    stream1200245950nu_out: 
      !>[A: $tType,B: $tType] : ( ( stream1273403375_sp_nu @ A @ B ) > ( stream901396144_sp_mu @ A @ B @ ( stream1273403375_sp_nu @ A @ B ) ) ) ).

thf(sy_c_Stream__Processor__Mirabelle__rrumbueyrq_Osp_092_060_094sub_062_092_060nu_062__comp,type,
    stream1967106959u_comp: 
      !>[A: $tType,B: $tType,C: $tType] : ( ( stream1273403375_sp_nu @ A @ B ) > ( stream1273403375_sp_nu @ C @ A ) > ( stream1273403375_sp_nu @ C @ B ) ) ).

thf(sy_c_Stream__Processor__Mirabelle__rrumbueyrq_Osub,type,
    stream152839592le_sub: 
      !>[A: $tType,B: $tType,C: $tType] : ( set @ ( product_prod @ ( stream901396144_sp_mu @ A @ B @ C ) @ ( stream901396144_sp_mu @ A @ B @ C ) ) ) ).

thf(sy_c_Wellfounded_Oacc,type,
    acc: 
      !>[A: $tType] : ( ( set @ ( product_prod @ A @ A ) ) > ( set @ A ) ) ).

thf(sy_c_Wellfounded_Oaccp,type,
    accp: 
      !>[A: $tType] : ( ( A > A > $o ) > A > $o ) ).

thf(sy_c_Wellfounded_Olex__prod,type,
    lex_prod: 
      !>[A: $tType,B: $tType] : ( ( set @ ( product_prod @ A @ A ) ) > ( set @ ( product_prod @ B @ B ) ) > ( set @ ( product_prod @ ( product_prod @ A @ B ) @ ( product_prod @ A @ B ) ) ) ) ).

thf(sy_c_Wfrec_Oadm__wf,type,
    adm_wf: 
      !>[A: $tType,B: $tType] : ( ( set @ ( product_prod @ A @ A ) ) > ( ( A > B ) > A > B ) > $o ) ).

thf(sy_c_Wfrec_Ocut,type,
    cut: 
      !>[A: $tType,B: $tType] : ( ( A > B ) > ( set @ ( product_prod @ A @ A ) ) > A > A > B ) ).

thf(sy_c_Wfrec_Osame__fst,type,
    same_fst: 
      !>[A: $tType,B: $tType] : ( ( A > $o ) > ( A > ( set @ ( product_prod @ B @ B ) ) ) > ( set @ ( product_prod @ ( product_prod @ A @ B ) @ ( product_prod @ A @ B ) ) ) ) ).

thf(sy_c_member,type,
    member: 
      !>[A: $tType] : ( A > ( set @ A ) > $o ) ).

thf(sy_v_b____,type,
    b2: c ).

thf(sy_v_f____,type,
    f: c > ( stream901396144_sp_mu @ c @ b @ ( stream1273403375_sp_nu @ c @ b ) ) ).

thf(sy_v_sb____,type,
    sb: stream @ a ).

thf(sy_v_sp_H_H____,type,
    sp: stream1273403375_sp_nu @ a @ c ).

thf(sy_v_sp_Hb____,type,
    sp_b: stream1273403375_sp_nu @ a @ c ).

thf(sy_v_spb____,type,
    spb: stream1273403375_sp_nu @ c @ b ).

%----Relevant facts (256)
thf(fact_0__092_060open_062_092_060And_062sa_O_A_092_060lbrakk_062f_Ab_A_061_Aout_A_IIn_A_If_Ab_J_J_059_Aout_Asp_H_H_A_061_Aout_Asp_H_H_092_060rbrakk_062_A_092_060Longrightarrow_062_Ashd_A_Irun_092_060_094sub_062_092_060nu_062_A_IIn_A_If_Ab_J_Ao_092_060_094sub_062_092_060nu_062_Asp_H_H_J_Asa_J_A_061_Ashd_A_Irun_092_060_094sub_062_092_060nu_062_A_IIn_A_If_Ab_J_J_A_Irun_092_060_094sub_062_092_060nu_062_Asp_H_H_Asa_J_J_A_092_060and_062_A_I_092_060exists_062sp_Asp_H_As_O_Astl_A_Irun_092_060_094sub_062_092_060nu_062_A_IIn_A_If_Ab_J_Ao_092_060_094sub_062_092_060nu_062_Asp_H_H_J_Asa_J_A_061_Arun_092_060_094sub_062_092_060nu_062_A_Isp_Ao_092_060_094sub_062_092_060nu_062_Asp_H_J_As_A_092_060and_062_Astl_A_Irun_092_060_094sub_062_092_060nu_062_A_IIn_A_If_Ab_J_J_A_Irun_092_060_094sub_062_092_060nu_062_Asp_H_H_Asa_J_J_A_061_Arun_092_060_094sub_062_092_060nu_062_Asp_A_Irun_092_060_094sub_062_092_060nu_062_Asp_H_As_J_J_092_060close_062,axiom,
    ! [S: stream @ a] :
      ( ( ( f @ b2 )
        = ( stream1200245950nu_out @ c @ b @ ( stream1686501333_nu_In @ c @ b @ ( f @ b2 ) ) ) )
     => ( ( ( stream1200245950nu_out @ a @ c @ sp )
          = ( stream1200245950nu_out @ a @ c @ sp ) )
       => ( ( ( shd @ b @ ( stream377071682run_nu @ a @ b @ ( stream1967106959u_comp @ c @ b @ a @ ( stream1686501333_nu_In @ c @ b @ ( f @ b2 ) ) @ sp ) @ S ) )
            = ( shd @ b @ ( stream377071682run_nu @ c @ b @ ( stream1686501333_nu_In @ c @ b @ ( f @ b2 ) ) @ ( stream377071682run_nu @ a @ c @ sp @ S ) ) ) )
          & ? [Sp: stream1273403375_sp_nu @ c @ b,Sp2: stream1273403375_sp_nu @ a @ c,S2: stream @ a] :
              ( ( ( stl @ b @ ( stream377071682run_nu @ a @ b @ ( stream1967106959u_comp @ c @ b @ a @ ( stream1686501333_nu_In @ c @ b @ ( f @ b2 ) ) @ sp ) @ S ) )
                = ( stream377071682run_nu @ a @ b @ ( stream1967106959u_comp @ c @ b @ a @ Sp @ Sp2 ) @ S2 ) )
              & ( ( stl @ b @ ( stream377071682run_nu @ c @ b @ ( stream1686501333_nu_In @ c @ b @ ( f @ b2 ) ) @ ( stream377071682run_nu @ a @ c @ sp @ S ) ) )
                = ( stream377071682run_nu @ c @ b @ Sp @ ( stream377071682run_nu @ a @ c @ Sp2 @ S2 ) ) ) ) ) ) ) ).

% \<open>\<And>sa. \<lbrakk>f b = out (In (f b)); out sp'' = out sp''\<rbrakk> \<Longrightarrow> shd (run\<^sub>\<nu> (In (f b) o\<^sub>\<nu> sp'') sa) = shd (run\<^sub>\<nu> (In (f b)) (run\<^sub>\<nu> sp'' sa)) \<and> (\<exists>sp sp' s. stl (run\<^sub>\<nu> (In (f b) o\<^sub>\<nu> sp'') sa) = run\<^sub>\<nu> (sp o\<^sub>\<nu> sp') s \<and> stl (run\<^sub>\<nu> (In (f b)) (run\<^sub>\<nu> sp'' sa)) = run\<^sub>\<nu> sp (run\<^sub>\<nu> sp' s))\<close>
thf(fact_1__C2_Ohyps_C_I1_J,axiom,
    ! [Sp3: stream1273403375_sp_nu @ c @ b,Sp4: stream1273403375_sp_nu @ a @ c,S: stream @ a] :
      ( ( ( f @ b2 )
        = ( stream1200245950nu_out @ c @ b @ Sp3 ) )
     => ( ( ( stream1200245950nu_out @ a @ c @ sp )
          = ( stream1200245950nu_out @ a @ c @ Sp4 ) )
       => ( ( ( shd @ b @ ( stream377071682run_nu @ a @ b @ ( stream1967106959u_comp @ c @ b @ a @ Sp3 @ Sp4 ) @ S ) )
            = ( shd @ b @ ( stream377071682run_nu @ c @ b @ Sp3 @ ( stream377071682run_nu @ a @ c @ Sp4 @ S ) ) ) )
          & ? [Sp: stream1273403375_sp_nu @ c @ b,Sp2: stream1273403375_sp_nu @ a @ c,S2: stream @ a] :
              ( ( ( stl @ b @ ( stream377071682run_nu @ a @ b @ ( stream1967106959u_comp @ c @ b @ a @ Sp3 @ Sp4 ) @ S ) )
                = ( stream377071682run_nu @ a @ b @ ( stream1967106959u_comp @ c @ b @ a @ Sp @ Sp2 ) @ S2 ) )
              & ( ( stl @ b @ ( stream377071682run_nu @ c @ b @ Sp3 @ ( stream377071682run_nu @ a @ c @ Sp4 @ S ) ) )
                = ( stream377071682run_nu @ c @ b @ Sp @ ( stream377071682run_nu @ a @ c @ Sp2 @ S2 ) ) ) ) ) ) ) ).

% "2.hyps"(1)
thf(fact_2__C2_Ohyps_C_I2_J,axiom,
    ( ( stream1294929701mu_Get @ c @ b @ ( stream1273403375_sp_nu @ c @ b ) @ f )
    = ( stream1200245950nu_out @ c @ b @ spb ) ) ).

% "2.hyps"(2)
thf(fact_3__C2_Ohyps_C_I3_J,axiom,
    ( ( stream1370332830mu_Put @ c @ ( stream1273403375_sp_nu @ a @ c ) @ a @ b2 @ sp )
    = ( stream1200245950nu_out @ a @ c @ sp_b ) ) ).

% "2.hyps"(3)
thf(fact_4_stream_Oexpand,axiom,
    ! [A: $tType,Stream: stream @ A,Stream2: stream @ A] :
      ( ( ( ( shd @ A @ Stream )
          = ( shd @ A @ Stream2 ) )
        & ( ( stl @ A @ Stream )
          = ( stl @ A @ Stream2 ) ) )
     => ( Stream = Stream2 ) ) ).

% stream.expand
thf(fact_5_stream_Ocoinduct,axiom,
    ! [A: $tType,R: ( stream @ A ) > ( stream @ A ) > $o,Stream: stream @ A,Stream2: stream @ A] :
      ( ( R @ Stream @ Stream2 )
     => ( ! [Stream3: stream @ A,Stream4: stream @ A] :
            ( ( R @ Stream3 @ Stream4 )
           => ( ( ( shd @ A @ Stream3 )
                = ( shd @ A @ Stream4 ) )
              & ( R @ ( stl @ A @ Stream3 ) @ ( stl @ A @ Stream4 ) ) ) )
       => ( Stream = Stream2 ) ) ) ).

% stream.coinduct
thf(fact_6_stream_Ocoinduct__strong,axiom,
    ! [A: $tType,R: ( stream @ A ) > ( stream @ A ) > $o,Stream: stream @ A,Stream2: stream @ A] :
      ( ( R @ Stream @ Stream2 )
     => ( ! [Stream3: stream @ A,Stream4: stream @ A] :
            ( ( R @ Stream3 @ Stream4 )
           => ( ( ( shd @ A @ Stream3 )
                = ( shd @ A @ Stream4 ) )
              & ( ( R @ ( stl @ A @ Stream3 ) @ ( stl @ A @ Stream4 ) )
                | ( ( stl @ A @ Stream3 )
                  = ( stl @ A @ Stream4 ) ) ) ) )
       => ( Stream = Stream2 ) ) ) ).

% stream.coinduct_strong
thf(fact_7_sp_092_060_094sub_062_092_060nu_062_Oinject,axiom,
    ! [B: $tType,A: $tType,X: stream901396144_sp_mu @ A @ B @ ( stream1273403375_sp_nu @ A @ B ),Ya: stream901396144_sp_mu @ A @ B @ ( stream1273403375_sp_nu @ A @ B )] :
      ( ( ( stream1686501333_nu_In @ A @ B @ X )
        = ( stream1686501333_nu_In @ A @ B @ Ya ) )
      = ( X = Ya ) ) ).

% sp\<^sub>\<nu>.inject
thf(fact_8_run_092_060_094sub_062_092_060nu_062__copy,axiom,
    ! [A: $tType,S: stream @ A] :
      ( ( stream377071682run_nu @ A @ A @ ( stream2017582925e_copy @ A ) @ S )
      = S ) ).

% run\<^sub>\<nu>_copy
thf(fact_9_stream_Ocase__eq__if,axiom,
    ! [B: $tType,A: $tType] :
      ( ( case_stream @ A @ B )
      = ( ^ [F: A > ( stream @ A ) > B,Stream5: stream @ A] : ( F @ ( shd @ A @ Stream5 ) @ ( stl @ A @ Stream5 ) ) ) ) ).

% stream.case_eq_if
thf(fact_10_sdrop__while_Osimps,axiom,
    ! [A: $tType] :
      ( ( sdrop_while @ A )
      = ( ^ [P: A > $o,S3: stream @ A] : ( if @ ( stream @ A ) @ ( P @ ( shd @ A @ S3 ) ) @ ( sdrop_while @ A @ P @ ( stl @ A @ S3 ) ) @ S3 ) ) ) ).

% sdrop_while.simps
thf(fact_11_stream_Ocollapse,axiom,
    ! [A: $tType,Stream: stream @ A] :
      ( ( sCons @ A @ ( shd @ A @ Stream ) @ ( stl @ A @ Stream ) )
      = Stream ) ).

% stream.collapse
thf(fact_12_streamsE,axiom,
    ! [A: $tType,S: stream @ A,A2: set @ A] :
      ( ( member @ ( stream @ A ) @ S @ ( streams @ A @ A2 ) )
     => ~ ( ( member @ A @ ( shd @ A @ S ) @ A2 )
         => ~ ( member @ ( stream @ A ) @ ( stl @ A @ S ) @ ( streams @ A @ A2 ) ) ) ) ).

% streamsE
thf(fact_13_sp_092_060_094sub_062_092_060mu_062_Oinject_I1_J,axiom,
    ! [C: $tType,B: $tType,A: $tType,X1: A > ( stream901396144_sp_mu @ A @ B @ C ),Y1: A > ( stream901396144_sp_mu @ A @ B @ C )] :
      ( ( ( stream1294929701mu_Get @ A @ B @ C @ X1 )
        = ( stream1294929701mu_Get @ A @ B @ C @ Y1 ) )
      = ( X1 = Y1 ) ) ).

% sp\<^sub>\<mu>.inject(1)
thf(fact_14_stream_Oinject,axiom,
    ! [A: $tType,X1: A,X2: stream @ A,Y1: A,Y2: stream @ A] :
      ( ( ( sCons @ A @ X1 @ X2 )
        = ( sCons @ A @ Y1 @ Y2 ) )
      = ( ( X1 = Y1 )
        & ( X2 = Y2 ) ) ) ).

% stream.inject
thf(fact_15_sp_092_060_094sub_062_092_060mu_062_Oinject_I2_J,axiom,
    ! [A: $tType,B: $tType,C: $tType,X21: B,X22: C,Y21: B,Y22: C] :
      ( ( ( stream1370332830mu_Put @ B @ C @ A @ X21 @ X22 )
        = ( stream1370332830mu_Put @ B @ C @ A @ Y21 @ Y22 ) )
      = ( ( X21 = Y21 )
        & ( X22 = Y22 ) ) ) ).

% sp\<^sub>\<mu>.inject(2)
thf(fact_16_sp_092_060_094sub_062_092_060nu_062_Ocollapse,axiom,
    ! [B: $tType,A: $tType,Sp_nu: stream1273403375_sp_nu @ A @ B] :
      ( ( stream1686501333_nu_In @ A @ B @ ( stream1200245950nu_out @ A @ B @ Sp_nu ) )
      = Sp_nu ) ).

% sp\<^sub>\<nu>.collapse
thf(fact_17_sp_092_060_094sub_062_092_060mu_062_Odistinct_I1_J,axiom,
    ! [B: $tType,A: $tType,C: $tType,X1: A > ( stream901396144_sp_mu @ A @ B @ C ),X21: B,X22: C] :
      ( ( stream1294929701mu_Get @ A @ B @ C @ X1 )
     != ( stream1370332830mu_Put @ B @ C @ A @ X21 @ X22 ) ) ).

% sp\<^sub>\<mu>.distinct(1)
thf(fact_18_stream_Ocase,axiom,
    ! [B: $tType,A: $tType,F2: A > ( stream @ A ) > B,X1: A,X2: stream @ A] :
      ( ( case_stream @ A @ B @ F2 @ ( sCons @ A @ X1 @ X2 ) )
      = ( F2 @ X1 @ X2 ) ) ).

% stream.case
thf(fact_19_streams_Ocases,axiom,
    ! [A: $tType,A3: stream @ A,A2: set @ A] :
      ( ( member @ ( stream @ A ) @ A3 @ ( streams @ A @ A2 ) )
     => ~ ! [A4: A,S2: stream @ A] :
            ( ( A3
              = ( sCons @ A @ A4 @ S2 ) )
           => ( ( member @ A @ A4 @ A2 )
             => ~ ( member @ ( stream @ A ) @ S2 @ ( streams @ A @ A2 ) ) ) ) ) ).

% streams.cases
thf(fact_20_streams_Osimps,axiom,
    ! [A: $tType,A3: stream @ A,A2: set @ A] :
      ( ( member @ ( stream @ A ) @ A3 @ ( streams @ A @ A2 ) )
      = ( ? [A5: A,S3: stream @ A] :
            ( ( A3
              = ( sCons @ A @ A5 @ S3 ) )
            & ( member @ A @ A5 @ A2 )
            & ( member @ ( stream @ A ) @ S3 @ ( streams @ A @ A2 ) ) ) ) ) ).

% streams.simps
thf(fact_21_stream_Oexhaust,axiom,
    ! [A: $tType,Y: stream @ A] :
      ~ ! [X12: A,X23: stream @ A] :
          ( Y
         != ( sCons @ A @ X12 @ X23 ) ) ).

% stream.exhaust
thf(fact_22_streams__Stream,axiom,
    ! [A: $tType,X: A,S: stream @ A,A2: set @ A] :
      ( ( member @ ( stream @ A ) @ ( sCons @ A @ X @ S ) @ ( streams @ A @ A2 ) )
      = ( ( member @ A @ X @ A2 )
        & ( member @ ( stream @ A ) @ S @ ( streams @ A @ A2 ) ) ) ) ).

% streams_Stream
thf(fact_23_streams_Ocoinduct,axiom,
    ! [A: $tType,X3: ( stream @ A ) > $o,X: stream @ A,A2: set @ A] :
      ( ( X3 @ X )
     => ( ! [X4: stream @ A] :
            ( ( X3 @ X4 )
           => ? [A6: A,S4: stream @ A] :
                ( ( X4
                  = ( sCons @ A @ A6 @ S4 ) )
                & ( member @ A @ A6 @ A2 )
                & ( ( X3 @ S4 )
                  | ( member @ ( stream @ A ) @ S4 @ ( streams @ A @ A2 ) ) ) ) )
       => ( member @ ( stream @ A ) @ X @ ( streams @ A @ A2 ) ) ) ) ).

% streams.coinduct
thf(fact_24_sdrop__while__SCons,axiom,
    ! [A: $tType,P2: A > $o,A3: A,S: stream @ A] :
      ( ( ( P2 @ A3 )
       => ( ( sdrop_while @ A @ P2 @ ( sCons @ A @ A3 @ S ) )
          = ( sdrop_while @ A @ P2 @ S ) ) )
      & ( ~ ( P2 @ A3 )
       => ( ( sdrop_while @ A @ P2 @ ( sCons @ A @ A3 @ S ) )
          = ( sCons @ A @ A3 @ S ) ) ) ) ).

% sdrop_while_SCons
thf(fact_25_sp_092_060_094sub_062_092_060mu_062_Oexhaust,axiom,
    ! [B: $tType,A: $tType,C: $tType,Y: stream901396144_sp_mu @ A @ B @ C] :
      ( ! [X12: A > ( stream901396144_sp_mu @ A @ B @ C )] :
          ( Y
         != ( stream1294929701mu_Get @ A @ B @ C @ X12 ) )
     => ~ ! [X212: B,X222: C] :
            ( Y
           != ( stream1370332830mu_Put @ B @ C @ A @ X212 @ X222 ) ) ) ).

% sp\<^sub>\<mu>.exhaust
thf(fact_26_sp_092_060_094sub_062_092_060mu_062__comp_Oinduct,axiom,
    ! [B: $tType,C: $tType,A: $tType,D: $tType,P2: ( stream901396144_sp_mu @ A @ B @ C ) > ( stream901396144_sp_mu @ D @ A @ ( stream1273403375_sp_nu @ D @ A ) ) > $o,A0: stream901396144_sp_mu @ A @ B @ C,A1: stream901396144_sp_mu @ D @ A @ ( stream1273403375_sp_nu @ D @ A )] :
      ( ! [B2: B,Sp: C,X12: stream901396144_sp_mu @ D @ A @ ( stream1273403375_sp_nu @ D @ A )] : ( P2 @ ( stream1370332830mu_Put @ B @ C @ A @ B2 @ Sp ) @ X12 )
     => ( ! [F3: A > ( stream901396144_sp_mu @ A @ B @ C ),B2: A,Sp: stream1273403375_sp_nu @ D @ A] :
            ( ( P2 @ ( F3 @ B2 ) @ ( stream1200245950nu_out @ D @ A @ Sp ) )
           => ( P2 @ ( stream1294929701mu_Get @ A @ B @ C @ F3 ) @ ( stream1370332830mu_Put @ A @ ( stream1273403375_sp_nu @ D @ A ) @ D @ B2 @ Sp ) ) )
       => ( ! [F3: A > ( stream901396144_sp_mu @ A @ B @ C ),G2: D > ( stream901396144_sp_mu @ D @ A @ ( stream1273403375_sp_nu @ D @ A ) )] :
              ( ! [X5: D] : ( P2 @ ( stream1294929701mu_Get @ A @ B @ C @ F3 ) @ ( G2 @ X5 ) )
             => ( P2 @ ( stream1294929701mu_Get @ A @ B @ C @ F3 ) @ ( stream1294929701mu_Get @ D @ A @ ( stream1273403375_sp_nu @ D @ A ) @ G2 ) ) )
         => ( P2 @ A0 @ A1 ) ) ) ) ).

% sp\<^sub>\<mu>_comp.induct
thf(fact_27_stream_Osel_I2_J,axiom,
    ! [A: $tType,X1: A,X2: stream @ A] :
      ( ( stl @ A @ ( sCons @ A @ X1 @ X2 ) )
      = X2 ) ).

% stream.sel(2)
thf(fact_28_stream_Osel_I1_J,axiom,
    ! [A: $tType,X1: A,X2: stream @ A] :
      ( ( shd @ A @ ( sCons @ A @ X1 @ X2 ) )
      = X1 ) ).

% stream.sel(1)
thf(fact_29_sp_092_060_094sub_062_092_060nu_062_Oexhaust__sel,axiom,
    ! [B: $tType,A: $tType,Sp_nu: stream1273403375_sp_nu @ A @ B] :
      ( Sp_nu
      = ( stream1686501333_nu_In @ A @ B @ ( stream1200245950nu_out @ A @ B @ Sp_nu ) ) ) ).

% sp\<^sub>\<nu>.exhaust_sel
thf(fact_30_sp_092_060_094sub_062_092_060nu_062_Osel,axiom,
    ! [B: $tType,A: $tType,X: stream901396144_sp_mu @ A @ B @ ( stream1273403375_sp_nu @ A @ B )] :
      ( ( stream1200245950nu_out @ A @ B @ ( stream1686501333_nu_In @ A @ B @ X ) )
      = X ) ).

% sp\<^sub>\<nu>.sel
thf(fact_31_streams__stl,axiom,
    ! [A: $tType,S: stream @ A,A2: set @ A] :
      ( ( member @ ( stream @ A ) @ S @ ( streams @ A @ A2 ) )
     => ( member @ ( stream @ A ) @ ( stl @ A @ S ) @ ( streams @ A @ A2 ) ) ) ).

% streams_stl
thf(fact_32_streams__shd,axiom,
    ! [A: $tType,S: stream @ A,A2: set @ A] :
      ( ( member @ ( stream @ A ) @ S @ ( streams @ A @ A2 ) )
     => ( member @ A @ ( shd @ A @ S ) @ A2 ) ) ).

% streams_shd
thf(fact_33_stream_Osplit__sel__asm,axiom,
    ! [B: $tType,A: $tType,P2: B > $o,F2: A > ( stream @ A ) > B,Stream: stream @ A] :
      ( ( P2 @ ( case_stream @ A @ B @ F2 @ Stream ) )
      = ( ~ ( ( Stream
              = ( sCons @ A @ ( shd @ A @ Stream ) @ ( stl @ A @ Stream ) ) )
            & ~ ( P2 @ ( F2 @ ( shd @ A @ Stream ) @ ( stl @ A @ Stream ) ) ) ) ) ) ).

% stream.split_sel_asm
thf(fact_34_stream_Osplit__sel,axiom,
    ! [B: $tType,A: $tType,P2: B > $o,F2: A > ( stream @ A ) > B,Stream: stream @ A] :
      ( ( P2 @ ( case_stream @ A @ B @ F2 @ Stream ) )
      = ( ( Stream
          = ( sCons @ A @ ( shd @ A @ Stream ) @ ( stl @ A @ Stream ) ) )
       => ( P2 @ ( F2 @ ( shd @ A @ Stream ) @ ( stl @ A @ Stream ) ) ) ) ) ).

% stream.split_sel
thf(fact_35_sp_092_060_094sub_062_092_060nu_062_Oexpand,axiom,
    ! [B: $tType,A: $tType,Sp_nu: stream1273403375_sp_nu @ A @ B,Sp_nu2: stream1273403375_sp_nu @ A @ B] :
      ( ( ( stream1200245950nu_out @ A @ B @ Sp_nu )
        = ( stream1200245950nu_out @ A @ B @ Sp_nu2 ) )
     => ( Sp_nu = Sp_nu2 ) ) ).

% sp\<^sub>\<nu>.expand
thf(fact_36_stream_Oexhaust__sel,axiom,
    ! [A: $tType,Stream: stream @ A] :
      ( Stream
      = ( sCons @ A @ ( shd @ A @ Stream ) @ ( stl @ A @ Stream ) ) ) ).

% stream.exhaust_sel
thf(fact_37_sp_092_060_094sub_062_092_060nu_062_Oexhaust,axiom,
    ! [B: $tType,A: $tType,Y: stream1273403375_sp_nu @ A @ B] :
      ~ ! [X4: stream901396144_sp_mu @ A @ B @ ( stream1273403375_sp_nu @ A @ B )] :
          ( Y
         != ( stream1686501333_nu_In @ A @ B @ X4 ) ) ).

% sp\<^sub>\<nu>.exhaust
thf(fact_38_in__streams,axiom,
    ! [A: $tType,S: stream @ A,S5: set @ A] :
      ( ( member @ ( stream @ A ) @ ( stl @ A @ S ) @ ( streams @ A @ S5 ) )
     => ( ( member @ A @ ( shd @ A @ S ) @ S5 )
       => ( member @ ( stream @ A ) @ S @ ( streams @ A @ S5 ) ) ) ) ).

% in_streams
thf(fact_39_run_092_060_094sub_062_092_060mu_062_Osimps_I1_J,axiom,
    ! [C: $tType,B: $tType,A: $tType,F2: A > ( stream901396144_sp_mu @ A @ B @ C ),S: stream @ A] :
      ( ( stream5064451run_mu @ A @ B @ C @ ( stream1294929701mu_Get @ A @ B @ C @ F2 ) @ S )
      = ( stream5064451run_mu @ A @ B @ C @ ( F2 @ ( shd @ A @ S ) ) @ ( stl @ A @ S ) ) ) ).

% run\<^sub>\<mu>.simps(1)
thf(fact_40_smember__code,axiom,
    ! [A: $tType,X: A,Y: A,S: stream @ A] :
      ( ( smember @ A @ X @ ( sCons @ A @ Y @ S ) )
      = ( ( X != Y )
       => ( smember @ A @ X @ S ) ) ) ).

% smember_code
thf(fact_41_sinterleave_Ocode,axiom,
    ! [A: $tType] :
      ( ( sinterleave @ A )
      = ( ^ [S1: stream @ A,S22: stream @ A] : ( sCons @ A @ ( shd @ A @ S1 ) @ ( sinterleave @ A @ S22 @ ( stl @ A @ S1 ) ) ) ) ) ).

% sinterleave.code
thf(fact_42_sp_092_060_094sub_062_092_060mu_062__comp_Osimps_I2_J,axiom,
    ! [C: $tType,B: $tType,A: $tType,D: $tType,F2: A > ( stream901396144_sp_mu @ A @ B @ C ),B3: A,Sp3: stream1273403375_sp_nu @ D @ A] :
      ( ( stream1747196112u_comp @ A @ B @ C @ D @ ( stream1294929701mu_Get @ A @ B @ C @ F2 ) @ ( stream1370332830mu_Put @ A @ ( stream1273403375_sp_nu @ D @ A ) @ D @ B3 @ Sp3 ) )
      = ( stream1747196112u_comp @ A @ B @ C @ D @ ( F2 @ B3 ) @ ( stream1200245950nu_out @ D @ A @ Sp3 ) ) ) ).

% sp\<^sub>\<mu>_comp.simps(2)
thf(fact_43_smap2_Ocode,axiom,
    ! [C: $tType,B: $tType,A: $tType] :
      ( ( smap2 @ A @ B @ C )
      = ( ^ [F: A > B > C,S1: stream @ A,S22: stream @ B] : ( sCons @ C @ ( F @ ( shd @ A @ S1 ) @ ( shd @ B @ S22 ) ) @ ( smap2 @ A @ B @ C @ F @ ( stl @ A @ S1 ) @ ( stl @ B @ S22 ) ) ) ) ) ).

% smap2.code
thf(fact_44_sp_092_060_094sub_062_092_060mu_062__comp_Ocases,axiom,
    ! [B: $tType,C: $tType,A: $tType,D: $tType,X: product_prod @ ( stream901396144_sp_mu @ A @ B @ C ) @ ( stream901396144_sp_mu @ D @ A @ ( stream1273403375_sp_nu @ D @ A ) )] :
      ( ! [B2: B,Sp: C,Fsp: stream901396144_sp_mu @ D @ A @ ( stream1273403375_sp_nu @ D @ A )] :
          ( X
         != ( product_Pair @ ( stream901396144_sp_mu @ A @ B @ C ) @ ( stream901396144_sp_mu @ D @ A @ ( stream1273403375_sp_nu @ D @ A ) ) @ ( stream1370332830mu_Put @ B @ C @ A @ B2 @ Sp ) @ Fsp ) )
     => ( ! [F3: A > ( stream901396144_sp_mu @ A @ B @ C ),B2: A,Sp: stream1273403375_sp_nu @ D @ A] :
            ( X
           != ( product_Pair @ ( stream901396144_sp_mu @ A @ B @ C ) @ ( stream901396144_sp_mu @ D @ A @ ( stream1273403375_sp_nu @ D @ A ) ) @ ( stream1294929701mu_Get @ A @ B @ C @ F3 ) @ ( stream1370332830mu_Put @ A @ ( stream1273403375_sp_nu @ D @ A ) @ D @ B2 @ Sp ) ) )
       => ~ ! [F3: A > ( stream901396144_sp_mu @ A @ B @ C ),G2: D > ( stream901396144_sp_mu @ D @ A @ ( stream1273403375_sp_nu @ D @ A ) )] :
              ( X
             != ( product_Pair @ ( stream901396144_sp_mu @ A @ B @ C ) @ ( stream901396144_sp_mu @ D @ A @ ( stream1273403375_sp_nu @ D @ A ) ) @ ( stream1294929701mu_Get @ A @ B @ C @ F3 ) @ ( stream1294929701mu_Get @ D @ A @ ( stream1273403375_sp_nu @ D @ A ) @ G2 ) ) ) ) ) ).

% sp\<^sub>\<mu>_comp.cases
thf(fact_45_mem__Collect__eq,axiom,
    ! [A: $tType,A3: A,P2: A > $o] :
      ( ( member @ A @ A3 @ ( collect @ A @ P2 ) )
      = ( P2 @ A3 ) ) ).

% mem_Collect_eq
thf(fact_46_Collect__mem__eq,axiom,
    ! [A: $tType,A2: set @ A] :
      ( ( collect @ A
        @ ^ [X6: A] : ( member @ A @ X6 @ A2 ) )
      = A2 ) ).

% Collect_mem_eq
thf(fact_47_Collect__cong,axiom,
    ! [A: $tType,P2: A > $o,Q: A > $o] :
      ( ! [X4: A] :
          ( ( P2 @ X4 )
          = ( Q @ X4 ) )
     => ( ( collect @ A @ P2 )
        = ( collect @ A @ Q ) ) ) ).

% Collect_cong
thf(fact_48_ext,axiom,
    ! [B: $tType,A: $tType,F2: A > B,G3: A > B] :
      ( ! [X4: A] :
          ( ( F2 @ X4 )
          = ( G3 @ X4 ) )
     => ( F2 = G3 ) ) ).

% ext
thf(fact_49_sp_092_060_094sub_062_092_060nu_062_Osplit__sel,axiom,
    ! [C: $tType,B: $tType,A: $tType,P2: C > $o,F2: ( stream901396144_sp_mu @ A @ B @ ( stream1273403375_sp_nu @ A @ B ) ) > C,Sp_nu: stream1273403375_sp_nu @ A @ B] :
      ( ( P2 @ ( stream1502363800_sp_nu @ A @ B @ C @ F2 @ Sp_nu ) )
      = ( ( Sp_nu
          = ( stream1686501333_nu_In @ A @ B @ ( stream1200245950nu_out @ A @ B @ Sp_nu ) ) )
       => ( P2 @ ( F2 @ ( stream1200245950nu_out @ A @ B @ Sp_nu ) ) ) ) ) ).

% sp\<^sub>\<nu>.split_sel
thf(fact_50_sp_092_060_094sub_062_092_060nu_062_Osplit__sel__asm,axiom,
    ! [C: $tType,B: $tType,A: $tType,P2: C > $o,F2: ( stream901396144_sp_mu @ A @ B @ ( stream1273403375_sp_nu @ A @ B ) ) > C,Sp_nu: stream1273403375_sp_nu @ A @ B] :
      ( ( P2 @ ( stream1502363800_sp_nu @ A @ B @ C @ F2 @ Sp_nu ) )
      = ( ~ ( ( Sp_nu
              = ( stream1686501333_nu_In @ A @ B @ ( stream1200245950nu_out @ A @ B @ Sp_nu ) ) )
            & ~ ( P2 @ ( F2 @ ( stream1200245950nu_out @ A @ B @ Sp_nu ) ) ) ) ) ) ).

% sp\<^sub>\<nu>.split_sel_asm
thf(fact_51_smap__ctr,axiom,
    ! [B: $tType,A: $tType,F2: B > A,S: stream @ B,X: A,S6: stream @ A] :
      ( ( ( smap @ B @ A @ F2 @ S )
        = ( sCons @ A @ X @ S6 ) )
      = ( ( ( F2 @ ( shd @ B @ S ) )
          = X )
        & ( ( smap @ B @ A @ F2 @ ( stl @ B @ S ) )
          = S6 ) ) ) ).

% smap_ctr
thf(fact_52_sfilter_Ocode,axiom,
    ! [A: $tType] :
      ( ( sfilter @ A )
      = ( ^ [P: A > $o,S3: stream @ A] : ( sCons @ A @ ( shd @ A @ ( sdrop_while @ A @ ( comp @ $o @ $o @ A @ (~) @ P ) @ S3 ) ) @ ( sfilter @ A @ P @ ( stl @ A @ ( sdrop_while @ A @ ( comp @ $o @ $o @ A @ (~) @ P ) @ S3 ) ) ) ) ) ) ).

% sfilter.code
thf(fact_53_stream__all__Stream,axiom,
    ! [A: $tType,P2: A > $o,X: A,X3: stream @ A] :
      ( ( stream_all @ A @ P2 @ ( sCons @ A @ X @ X3 ) )
      = ( ( P2 @ X )
        & ( stream_all @ A @ P2 @ X3 ) ) ) ).

% stream_all_Stream
thf(fact_54_stream_Omap__sel_I2_J,axiom,
    ! [B: $tType,A: $tType,F2: A > B,A3: stream @ A] :
      ( ( stl @ B @ ( smap @ A @ B @ F2 @ A3 ) )
      = ( smap @ A @ B @ F2 @ ( stl @ A @ A3 ) ) ) ).

% stream.map_sel(2)
thf(fact_55_stream_Omap__sel_I1_J,axiom,
    ! [B: $tType,A: $tType,F2: A > B,A3: stream @ A] :
      ( ( shd @ B @ ( smap @ A @ B @ F2 @ A3 ) )
      = ( F2 @ ( shd @ A @ A3 ) ) ) ).

% stream.map_sel(1)
thf(fact_56_stream_Omap__comp,axiom,
    ! [B: $tType,C: $tType,A: $tType,G3: B > C,F2: A > B,V: stream @ A] :
      ( ( smap @ B @ C @ G3 @ ( smap @ A @ B @ F2 @ V ) )
      = ( smap @ A @ C @ ( comp @ B @ C @ A @ G3 @ F2 ) @ V ) ) ).

% stream.map_comp
thf(fact_57_run_092_060_094sub_062_092_060mu_062_Osimps_I2_J,axiom,
    ! [C: $tType,B: $tType,A: $tType,B3: B,Sp3: C,S: stream @ A] :
      ( ( stream5064451run_mu @ A @ B @ C @ ( stream1370332830mu_Put @ B @ C @ A @ B3 @ Sp3 ) @ S )
      = ( product_Pair @ ( product_prod @ B @ C ) @ ( stream @ A ) @ ( product_Pair @ B @ C @ B3 @ Sp3 ) @ S ) ) ).

% run\<^sub>\<mu>.simps(2)
thf(fact_58_stream_Omap,axiom,
    ! [B: $tType,A: $tType,F2: A > B,X1: A,X2: stream @ A] :
      ( ( smap @ A @ B @ F2 @ ( sCons @ A @ X1 @ X2 ) )
      = ( sCons @ B @ ( F2 @ X1 ) @ ( smap @ A @ B @ F2 @ X2 ) ) ) ).

% stream.map
thf(fact_59_smap__streams,axiom,
    ! [A: $tType,B: $tType,S: stream @ A,A2: set @ A,F2: A > B,B4: set @ B] :
      ( ( member @ ( stream @ A ) @ S @ ( streams @ A @ A2 ) )
     => ( ! [X4: A] :
            ( ( member @ A @ X4 @ A2 )
           => ( member @ B @ ( F2 @ X4 ) @ B4 ) )
       => ( member @ ( stream @ B ) @ ( smap @ A @ B @ F2 @ S ) @ ( streams @ B @ B4 ) ) ) ) ).

% smap_streams
thf(fact_60_sfilter_Osimps_I2_J,axiom,
    ! [A: $tType,P2: A > $o,S: stream @ A] :
      ( ( stl @ A @ ( sfilter @ A @ P2 @ S ) )
      = ( sfilter @ A @ P2 @ ( stl @ A @ ( sdrop_while @ A @ ( comp @ $o @ $o @ A @ (~) @ P2 ) @ S ) ) ) ) ).

% sfilter.simps(2)
thf(fact_61_sfilter_Osimps_I1_J,axiom,
    ! [A: $tType,P2: A > $o,S: stream @ A] :
      ( ( shd @ A @ ( sfilter @ A @ P2 @ S ) )
      = ( shd @ A @ ( sdrop_while @ A @ ( comp @ $o @ $o @ A @ (~) @ P2 ) @ S ) ) ) ).

% sfilter.simps(1)
thf(fact_62_smap2_Osimps_I2_J,axiom,
    ! [A: $tType,C: $tType,B: $tType,F2: A > B > C,S12: stream @ A,S23: stream @ B] :
      ( ( stl @ C @ ( smap2 @ A @ B @ C @ F2 @ S12 @ S23 ) )
      = ( smap2 @ A @ B @ C @ F2 @ ( stl @ A @ S12 ) @ ( stl @ B @ S23 ) ) ) ).

% smap2.simps(2)
thf(fact_63_smap2_Osimps_I1_J,axiom,
    ! [A: $tType,C: $tType,B: $tType,F2: A > B > C,S12: stream @ A,S23: stream @ B] :
      ( ( shd @ C @ ( smap2 @ A @ B @ C @ F2 @ S12 @ S23 ) )
      = ( F2 @ ( shd @ A @ S12 ) @ ( shd @ B @ S23 ) ) ) ).

% smap2.simps(1)
thf(fact_64_smap2__unfold,axiom,
    ! [B: $tType,A: $tType,C: $tType,F2: B > C > A,A3: B,S12: stream @ B,B3: C,S23: stream @ C] :
      ( ( smap2 @ B @ C @ A @ F2 @ ( sCons @ B @ A3 @ S12 ) @ ( sCons @ C @ B3 @ S23 ) )
      = ( sCons @ A @ ( F2 @ A3 @ B3 ) @ ( smap2 @ B @ C @ A @ F2 @ S12 @ S23 ) ) ) ).

% smap2_unfold
thf(fact_65_sinterleave_Osimps_I2_J,axiom,
    ! [A: $tType,S12: stream @ A,S23: stream @ A] :
      ( ( stl @ A @ ( sinterleave @ A @ S12 @ S23 ) )
      = ( sinterleave @ A @ S23 @ ( stl @ A @ S12 ) ) ) ).

% sinterleave.simps(2)
thf(fact_66_sinterleave_Osimps_I1_J,axiom,
    ! [A: $tType,S12: stream @ A,S23: stream @ A] :
      ( ( shd @ A @ ( sinterleave @ A @ S12 @ S23 ) )
      = ( shd @ A @ S12 ) ) ).

% sinterleave.simps(1)
thf(fact_67_sinterleave__code,axiom,
    ! [A: $tType,X: A,S12: stream @ A,S23: stream @ A] :
      ( ( sinterleave @ A @ ( sCons @ A @ X @ S12 ) @ S23 )
      = ( sCons @ A @ X @ ( sinterleave @ A @ S23 @ S12 ) ) ) ).

% sinterleave_code
thf(fact_68_sfilter__Stream,axiom,
    ! [A: $tType,P2: A > $o,X: A,S: stream @ A] :
      ( ( ( P2 @ X )
       => ( ( sfilter @ A @ P2 @ ( sCons @ A @ X @ S ) )
          = ( sCons @ A @ X @ ( sfilter @ A @ P2 @ S ) ) ) )
      & ( ~ ( P2 @ X )
       => ( ( sfilter @ A @ P2 @ ( sCons @ A @ X @ S ) )
          = ( sfilter @ A @ P2 @ S ) ) ) ) ).

% sfilter_Stream
thf(fact_69_sp_092_060_094sub_062_092_060nu_062_Ocase__eq__if,axiom,
    ! [C: $tType,B: $tType,A: $tType] :
      ( ( stream1502363800_sp_nu @ A @ B @ C )
      = ( ^ [F: ( stream901396144_sp_mu @ A @ B @ ( stream1273403375_sp_nu @ A @ B ) ) > C,Sp_nu3: stream1273403375_sp_nu @ A @ B] : ( F @ ( stream1200245950nu_out @ A @ B @ Sp_nu3 ) ) ) ) ).

% sp\<^sub>\<nu>.case_eq_if
thf(fact_70_sp_092_060_094sub_062_092_060nu_062_Ocase,axiom,
    ! [C: $tType,B: $tType,A: $tType,F2: ( stream901396144_sp_mu @ A @ B @ ( stream1273403375_sp_nu @ A @ B ) ) > C,X: stream901396144_sp_mu @ A @ B @ ( stream1273403375_sp_nu @ A @ B )] :
      ( ( stream1502363800_sp_nu @ A @ B @ C @ F2 @ ( stream1686501333_nu_In @ A @ B @ X ) )
      = ( F2 @ X ) ) ).

% sp\<^sub>\<nu>.case
thf(fact_71_subI,axiom,
    ! [C: $tType,B: $tType,A: $tType,F2: A > ( stream901396144_sp_mu @ A @ B @ C ),A3: A] : ( member @ ( product_prod @ ( stream901396144_sp_mu @ A @ B @ C ) @ ( stream901396144_sp_mu @ A @ B @ C ) ) @ ( product_Pair @ ( stream901396144_sp_mu @ A @ B @ C ) @ ( stream901396144_sp_mu @ A @ B @ C ) @ ( F2 @ A3 ) @ ( stream1294929701mu_Get @ A @ B @ C @ F2 ) ) @ ( stream152839592le_sub @ A @ B @ C ) ) ).

% subI
thf(fact_72_comp__apply,axiom,
    ! [C: $tType,A: $tType,B: $tType] :
      ( ( comp @ B @ A @ C )
      = ( ^ [F: B > A,G4: C > B,X6: C] : ( F @ ( G4 @ X6 ) ) ) ) ).

% comp_apply
thf(fact_73_old_Oprod_Oinject,axiom,
    ! [A: $tType,B: $tType,A3: A,B3: B,A7: A,B5: B] :
      ( ( ( product_Pair @ A @ B @ A3 @ B3 )
        = ( product_Pair @ A @ B @ A7 @ B5 ) )
      = ( ( A3 = A7 )
        & ( B3 = B5 ) ) ) ).

% old.prod.inject
thf(fact_74_prod_Oinject,axiom,
    ! [A: $tType,B: $tType,X1: A,X2: B,Y1: A,Y2: B] :
      ( ( ( product_Pair @ A @ B @ X1 @ X2 )
        = ( product_Pair @ A @ B @ Y1 @ Y2 ) )
      = ( ( X1 = Y1 )
        & ( X2 = Y2 ) ) ) ).

% prod.inject
thf(fact_75_szip_Ocode,axiom,
    ! [B: $tType,A: $tType] :
      ( ( szip @ A @ B )
      = ( ^ [S1: stream @ A,S22: stream @ B] : ( sCons @ ( product_prod @ A @ B ) @ ( product_Pair @ A @ B @ ( shd @ A @ S1 ) @ ( shd @ B @ S22 ) ) @ ( szip @ A @ B @ ( stl @ A @ S1 ) @ ( stl @ B @ S22 ) ) ) ) ) ).

% szip.code
thf(fact_76_sp_092_060_094sub_062_092_060mu_062__comp_Opinduct,axiom,
    ! [B: $tType,C: $tType,A: $tType,D: $tType,A0: stream901396144_sp_mu @ A @ B @ C,A1: stream901396144_sp_mu @ D @ A @ ( stream1273403375_sp_nu @ D @ A ),P2: ( stream901396144_sp_mu @ A @ B @ C ) > ( stream901396144_sp_mu @ D @ A @ ( stream1273403375_sp_nu @ D @ A ) ) > $o] :
      ( ( accp @ ( product_prod @ ( stream901396144_sp_mu @ A @ B @ C ) @ ( stream901396144_sp_mu @ D @ A @ ( stream1273403375_sp_nu @ D @ A ) ) ) @ ( stream592421929mp_rel @ A @ B @ C @ D ) @ ( product_Pair @ ( stream901396144_sp_mu @ A @ B @ C ) @ ( stream901396144_sp_mu @ D @ A @ ( stream1273403375_sp_nu @ D @ A ) ) @ A0 @ A1 ) )
     => ( ! [B2: B,Sp: C,Fsp: stream901396144_sp_mu @ D @ A @ ( stream1273403375_sp_nu @ D @ A )] :
            ( ( accp @ ( product_prod @ ( stream901396144_sp_mu @ A @ B @ C ) @ ( stream901396144_sp_mu @ D @ A @ ( stream1273403375_sp_nu @ D @ A ) ) ) @ ( stream592421929mp_rel @ A @ B @ C @ D ) @ ( product_Pair @ ( stream901396144_sp_mu @ A @ B @ C ) @ ( stream901396144_sp_mu @ D @ A @ ( stream1273403375_sp_nu @ D @ A ) ) @ ( stream1370332830mu_Put @ B @ C @ A @ B2 @ Sp ) @ Fsp ) )
           => ( P2 @ ( stream1370332830mu_Put @ B @ C @ A @ B2 @ Sp ) @ Fsp ) )
       => ( ! [F3: A > ( stream901396144_sp_mu @ A @ B @ C ),B2: A,Sp: stream1273403375_sp_nu @ D @ A] :
              ( ( accp @ ( product_prod @ ( stream901396144_sp_mu @ A @ B @ C ) @ ( stream901396144_sp_mu @ D @ A @ ( stream1273403375_sp_nu @ D @ A ) ) ) @ ( stream592421929mp_rel @ A @ B @ C @ D ) @ ( product_Pair @ ( stream901396144_sp_mu @ A @ B @ C ) @ ( stream901396144_sp_mu @ D @ A @ ( stream1273403375_sp_nu @ D @ A ) ) @ ( stream1294929701mu_Get @ A @ B @ C @ F3 ) @ ( stream1370332830mu_Put @ A @ ( stream1273403375_sp_nu @ D @ A ) @ D @ B2 @ Sp ) ) )
             => ( ( P2 @ ( F3 @ B2 ) @ ( stream1200245950nu_out @ D @ A @ Sp ) )
               => ( P2 @ ( stream1294929701mu_Get @ A @ B @ C @ F3 ) @ ( stream1370332830mu_Put @ A @ ( stream1273403375_sp_nu @ D @ A ) @ D @ B2 @ Sp ) ) ) )
         => ( ! [F3: A > ( stream901396144_sp_mu @ A @ B @ C ),G2: D > ( stream901396144_sp_mu @ D @ A @ ( stream1273403375_sp_nu @ D @ A ) )] :
                ( ( accp @ ( product_prod @ ( stream901396144_sp_mu @ A @ B @ C ) @ ( stream901396144_sp_mu @ D @ A @ ( stream1273403375_sp_nu @ D @ A ) ) ) @ ( stream592421929mp_rel @ A @ B @ C @ D ) @ ( product_Pair @ ( stream901396144_sp_mu @ A @ B @ C ) @ ( stream901396144_sp_mu @ D @ A @ ( stream1273403375_sp_nu @ D @ A ) ) @ ( stream1294929701mu_Get @ A @ B @ C @ F3 ) @ ( stream1294929701mu_Get @ D @ A @ ( stream1273403375_sp_nu @ D @ A ) @ G2 ) ) )
               => ( ! [X5: D] : ( P2 @ ( stream1294929701mu_Get @ A @ B @ C @ F3 ) @ ( G2 @ X5 ) )
                 => ( P2 @ ( stream1294929701mu_Get @ A @ B @ C @ F3 ) @ ( stream1294929701mu_Get @ D @ A @ ( stream1273403375_sp_nu @ D @ A ) @ G2 ) ) ) )
           => ( P2 @ A0 @ A1 ) ) ) ) ) ).

% sp\<^sub>\<mu>_comp.pinduct
thf(fact_77_sp_092_060_094sub_062_092_060mu_062__comp_Opsimps_I2_J,axiom,
    ! [C: $tType,B: $tType,A: $tType,D: $tType,F2: A > ( stream901396144_sp_mu @ A @ B @ C ),B3: A,Sp3: stream1273403375_sp_nu @ D @ A] :
      ( ( accp @ ( product_prod @ ( stream901396144_sp_mu @ A @ B @ C ) @ ( stream901396144_sp_mu @ D @ A @ ( stream1273403375_sp_nu @ D @ A ) ) ) @ ( stream592421929mp_rel @ A @ B @ C @ D ) @ ( product_Pair @ ( stream901396144_sp_mu @ A @ B @ C ) @ ( stream901396144_sp_mu @ D @ A @ ( stream1273403375_sp_nu @ D @ A ) ) @ ( stream1294929701mu_Get @ A @ B @ C @ F2 ) @ ( stream1370332830mu_Put @ A @ ( stream1273403375_sp_nu @ D @ A ) @ D @ B3 @ Sp3 ) ) )
     => ( ( stream1747196112u_comp @ A @ B @ C @ D @ ( stream1294929701mu_Get @ A @ B @ C @ F2 ) @ ( stream1370332830mu_Put @ A @ ( stream1273403375_sp_nu @ D @ A ) @ D @ B3 @ Sp3 ) )
        = ( stream1747196112u_comp @ A @ B @ C @ D @ ( F2 @ B3 ) @ ( stream1200245950nu_out @ D @ A @ Sp3 ) ) ) ) ).

% sp\<^sub>\<mu>_comp.psimps(2)
thf(fact_78_stream_Omap__o__corec,axiom,
    ! [A: $tType,B: $tType,C: $tType,F2: A > B,G3: C > A,Ga: C > $o,Gb: C > ( stream @ A ),Gc: C > C] :
      ( ( comp @ ( stream @ A ) @ ( stream @ B ) @ C @ ( smap @ A @ B @ F2 ) @ ( corec_stream @ C @ A @ G3 @ Ga @ Gb @ Gc ) )
      = ( corec_stream @ C @ B @ ( comp @ A @ B @ C @ F2 @ G3 ) @ Ga @ ( comp @ ( stream @ A ) @ ( stream @ B ) @ C @ ( smap @ A @ B @ F2 ) @ Gb ) @ Gc ) ) ).

% stream.map_o_corec
thf(fact_79_stream_Ocorec__disc,axiom,
    ! [A: $tType,C: $tType] :
      ( ( corec_stream @ C @ A )
      = ( corec_stream @ C @ A ) ) ).

% stream.corec_disc
thf(fact_80_sp_092_060_094sub_062_092_060mu_062__comp_Opsimps_I1_J,axiom,
    ! [B: $tType,C: $tType,A: $tType,D: $tType,B3: B,Sp3: C,Fsp2: stream901396144_sp_mu @ D @ A @ ( stream1273403375_sp_nu @ D @ A )] :
      ( ( accp @ ( product_prod @ ( stream901396144_sp_mu @ A @ B @ C ) @ ( stream901396144_sp_mu @ D @ A @ ( stream1273403375_sp_nu @ D @ A ) ) ) @ ( stream592421929mp_rel @ A @ B @ C @ D ) @ ( product_Pair @ ( stream901396144_sp_mu @ A @ B @ C ) @ ( stream901396144_sp_mu @ D @ A @ ( stream1273403375_sp_nu @ D @ A ) ) @ ( stream1370332830mu_Put @ B @ C @ A @ B3 @ Sp3 ) @ Fsp2 ) )
     => ( ( stream1747196112u_comp @ A @ B @ C @ D @ ( stream1370332830mu_Put @ B @ C @ A @ B3 @ Sp3 ) @ Fsp2 )
        = ( stream1370332830mu_Put @ B @ ( product_prod @ C @ ( stream1273403375_sp_nu @ D @ A ) ) @ D @ B3 @ ( product_Pair @ C @ ( stream1273403375_sp_nu @ D @ A ) @ Sp3 @ ( stream1686501333_nu_In @ D @ A @ Fsp2 ) ) ) ) ) ).

% sp\<^sub>\<mu>_comp.psimps(1)
thf(fact_81_szip_Osimps_I2_J,axiom,
    ! [A: $tType,B: $tType,S12: stream @ A,S23: stream @ B] :
      ( ( stl @ ( product_prod @ A @ B ) @ ( szip @ A @ B @ S12 @ S23 ) )
      = ( szip @ A @ B @ ( stl @ A @ S12 ) @ ( stl @ B @ S23 ) ) ) ).

% szip.simps(2)
thf(fact_82_stream_Ocorec__sel_I2_J,axiom,
    ! [A: $tType,C: $tType,Q2: C > $o,A3: C,G1: C > A,G21: C > ( stream @ A ),G22: C > C] :
      ( ( ( Q2 @ A3 )
       => ( ( stl @ A @ ( corec_stream @ C @ A @ G1 @ Q2 @ G21 @ G22 @ A3 ) )
          = ( G21 @ A3 ) ) )
      & ( ~ ( Q2 @ A3 )
       => ( ( stl @ A @ ( corec_stream @ C @ A @ G1 @ Q2 @ G21 @ G22 @ A3 ) )
          = ( corec_stream @ C @ A @ G1 @ Q2 @ G21 @ G22 @ ( G22 @ A3 ) ) ) ) ) ).

% stream.corec_sel(2)
thf(fact_83_stream_Ocorec__sel_I1_J,axiom,
    ! [A: $tType,C: $tType,G1: C > A,Q2: C > $o,G21: C > ( stream @ A ),G22: C > C,A3: C] :
      ( ( shd @ A @ ( corec_stream @ C @ A @ G1 @ Q2 @ G21 @ G22 @ A3 ) )
      = ( G1 @ A3 ) ) ).

% stream.corec_sel(1)
thf(fact_84_stream_Ocorec__code,axiom,
    ! [A: $tType,C: $tType] :
      ( ( corec_stream @ C @ A )
      = ( ^ [G12: C > A,Q22: C > $o,G212: C > ( stream @ A ),G222: C > C,A5: C] : ( sCons @ A @ ( G12 @ A5 ) @ ( if @ ( stream @ A ) @ ( Q22 @ A5 ) @ ( G212 @ A5 ) @ ( corec_stream @ C @ A @ G12 @ Q22 @ G212 @ G222 @ ( G222 @ A5 ) ) ) ) ) ) ).

% stream.corec_code
thf(fact_85_surj__pair,axiom,
    ! [A: $tType,B: $tType,P3: product_prod @ A @ B] :
    ? [X4: A,Y3: B] :
      ( P3
      = ( product_Pair @ A @ B @ X4 @ Y3 ) ) ).

% surj_pair
thf(fact_86_prod__cases,axiom,
    ! [B: $tType,A: $tType,P2: ( product_prod @ A @ B ) > $o,P3: product_prod @ A @ B] :
      ( ! [A4: A,B2: B] : ( P2 @ ( product_Pair @ A @ B @ A4 @ B2 ) )
     => ( P2 @ P3 ) ) ).

% prod_cases
thf(fact_87_Pair__inject,axiom,
    ! [A: $tType,B: $tType,A3: A,B3: B,A7: A,B5: B] :
      ( ( ( product_Pair @ A @ B @ A3 @ B3 )
        = ( product_Pair @ A @ B @ A7 @ B5 ) )
     => ~ ( ( A3 = A7 )
         => ( B3 != B5 ) ) ) ).

% Pair_inject
thf(fact_88_prod__cases3,axiom,
    ! [A: $tType,B: $tType,C: $tType,Y: product_prod @ A @ ( product_prod @ B @ C )] :
      ~ ! [A4: A,B2: B,C2: C] :
          ( Y
         != ( product_Pair @ A @ ( product_prod @ B @ C ) @ A4 @ ( product_Pair @ B @ C @ B2 @ C2 ) ) ) ).

% prod_cases3
thf(fact_89_prod__cases4,axiom,
    ! [A: $tType,B: $tType,C: $tType,D: $tType,Y: product_prod @ A @ ( product_prod @ B @ ( product_prod @ C @ D ) )] :
      ~ ! [A4: A,B2: B,C2: C,D2: D] :
          ( Y
         != ( product_Pair @ A @ ( product_prod @ B @ ( product_prod @ C @ D ) ) @ A4 @ ( product_Pair @ B @ ( product_prod @ C @ D ) @ B2 @ ( product_Pair @ C @ D @ C2 @ D2 ) ) ) ) ).

% prod_cases4
thf(fact_90_prod__cases5,axiom,
    ! [A: $tType,B: $tType,C: $tType,D: $tType,E: $tType,Y: product_prod @ A @ ( product_prod @ B @ ( product_prod @ C @ ( product_prod @ D @ E ) ) )] :
      ~ ! [A4: A,B2: B,C2: C,D2: D,E2: E] :
          ( Y
         != ( product_Pair @ A @ ( product_prod @ B @ ( product_prod @ C @ ( product_prod @ D @ E ) ) ) @ A4 @ ( product_Pair @ B @ ( product_prod @ C @ ( product_prod @ D @ E ) ) @ B2 @ ( product_Pair @ C @ ( product_prod @ D @ E ) @ C2 @ ( product_Pair @ D @ E @ D2 @ E2 ) ) ) ) ) ).

% prod_cases5
thf(fact_91_prod__cases6,axiom,
    ! [A: $tType,B: $tType,C: $tType,D: $tType,E: $tType,F4: $tType,Y: product_prod @ A @ ( product_prod @ B @ ( product_prod @ C @ ( product_prod @ D @ ( product_prod @ E @ F4 ) ) ) )] :
      ~ ! [A4: A,B2: B,C2: C,D2: D,E2: E,F3: F4] :
          ( Y
         != ( product_Pair @ A @ ( product_prod @ B @ ( product_prod @ C @ ( product_prod @ D @ ( product_prod @ E @ F4 ) ) ) ) @ A4 @ ( product_Pair @ B @ ( product_prod @ C @ ( product_prod @ D @ ( product_prod @ E @ F4 ) ) ) @ B2 @ ( product_Pair @ C @ ( product_prod @ D @ ( product_prod @ E @ F4 ) ) @ C2 @ ( product_Pair @ D @ ( product_prod @ E @ F4 ) @ D2 @ ( product_Pair @ E @ F4 @ E2 @ F3 ) ) ) ) ) ) ).

% prod_cases6
thf(fact_92_prod__cases7,axiom,
    ! [A: $tType,B: $tType,C: $tType,D: $tType,E: $tType,F4: $tType,G: $tType,Y: product_prod @ A @ ( product_prod @ B @ ( product_prod @ C @ ( product_prod @ D @ ( product_prod @ E @ ( product_prod @ F4 @ G ) ) ) ) )] :
      ~ ! [A4: A,B2: B,C2: C,D2: D,E2: E,F3: F4,G2: G] :
          ( Y
         != ( product_Pair @ A @ ( product_prod @ B @ ( product_prod @ C @ ( product_prod @ D @ ( product_prod @ E @ ( product_prod @ F4 @ G ) ) ) ) ) @ A4 @ ( product_Pair @ B @ ( product_prod @ C @ ( product_prod @ D @ ( product_prod @ E @ ( product_prod @ F4 @ G ) ) ) ) @ B2 @ ( product_Pair @ C @ ( product_prod @ D @ ( product_prod @ E @ ( product_prod @ F4 @ G ) ) ) @ C2 @ ( product_Pair @ D @ ( product_prod @ E @ ( product_prod @ F4 @ G ) ) @ D2 @ ( product_Pair @ E @ ( product_prod @ F4 @ G ) @ E2 @ ( product_Pair @ F4 @ G @ F3 @ G2 ) ) ) ) ) ) ) ).

% prod_cases7
thf(fact_93_prod__induct3,axiom,
    ! [C: $tType,B: $tType,A: $tType,P2: ( product_prod @ A @ ( product_prod @ B @ C ) ) > $o,X: product_prod @ A @ ( product_prod @ B @ C )] :
      ( ! [A4: A,B2: B,C2: C] : ( P2 @ ( product_Pair @ A @ ( product_prod @ B @ C ) @ A4 @ ( product_Pair @ B @ C @ B2 @ C2 ) ) )
     => ( P2 @ X ) ) ).

% prod_induct3
thf(fact_94_prod__induct4,axiom,
    ! [D: $tType,C: $tType,B: $tType,A: $tType,P2: ( product_prod @ A @ ( product_prod @ B @ ( product_prod @ C @ D ) ) ) > $o,X: product_prod @ A @ ( product_prod @ B @ ( product_prod @ C @ D ) )] :
      ( ! [A4: A,B2: B,C2: C,D2: D] : ( P2 @ ( product_Pair @ A @ ( product_prod @ B @ ( product_prod @ C @ D ) ) @ A4 @ ( product_Pair @ B @ ( product_prod @ C @ D ) @ B2 @ ( product_Pair @ C @ D @ C2 @ D2 ) ) ) )
     => ( P2 @ X ) ) ).

% prod_induct4
thf(fact_95_prod__induct5,axiom,
    ! [E: $tType,D: $tType,C: $tType,B: $tType,A: $tType,P2: ( product_prod @ A @ ( product_prod @ B @ ( product_prod @ C @ ( product_prod @ D @ E ) ) ) ) > $o,X: product_prod @ A @ ( product_prod @ B @ ( product_prod @ C @ ( product_prod @ D @ E ) ) )] :
      ( ! [A4: A,B2: B,C2: C,D2: D,E2: E] : ( P2 @ ( product_Pair @ A @ ( product_prod @ B @ ( product_prod @ C @ ( product_prod @ D @ E ) ) ) @ A4 @ ( product_Pair @ B @ ( product_prod @ C @ ( product_prod @ D @ E ) ) @ B2 @ ( product_Pair @ C @ ( product_prod @ D @ E ) @ C2 @ ( product_Pair @ D @ E @ D2 @ E2 ) ) ) ) )
     => ( P2 @ X ) ) ).

% prod_induct5
thf(fact_96_prod__induct6,axiom,
    ! [F4: $tType,E: $tType,D: $tType,C: $tType,B: $tType,A: $tType,P2: ( product_prod @ A @ ( product_prod @ B @ ( product_prod @ C @ ( product_prod @ D @ ( product_prod @ E @ F4 ) ) ) ) ) > $o,X: product_prod @ A @ ( product_prod @ B @ ( product_prod @ C @ ( product_prod @ D @ ( product_prod @ E @ F4 ) ) ) )] :
      ( ! [A4: A,B2: B,C2: C,D2: D,E2: E,F3: F4] : ( P2 @ ( product_Pair @ A @ ( product_prod @ B @ ( product_prod @ C @ ( product_prod @ D @ ( product_prod @ E @ F4 ) ) ) ) @ A4 @ ( product_Pair @ B @ ( product_prod @ C @ ( product_prod @ D @ ( product_prod @ E @ F4 ) ) ) @ B2 @ ( product_Pair @ C @ ( product_prod @ D @ ( product_prod @ E @ F4 ) ) @ C2 @ ( product_Pair @ D @ ( product_prod @ E @ F4 ) @ D2 @ ( product_Pair @ E @ F4 @ E2 @ F3 ) ) ) ) ) )
     => ( P2 @ X ) ) ).

% prod_induct6
thf(fact_97_prod__induct7,axiom,
    ! [G: $tType,F4: $tType,E: $tType,D: $tType,C: $tType,B: $tType,A: $tType,P2: ( product_prod @ A @ ( product_prod @ B @ ( product_prod @ C @ ( product_prod @ D @ ( product_prod @ E @ ( product_prod @ F4 @ G ) ) ) ) ) ) > $o,X: product_prod @ A @ ( product_prod @ B @ ( product_prod @ C @ ( product_prod @ D @ ( product_prod @ E @ ( product_prod @ F4 @ G ) ) ) ) )] :
      ( ! [A4: A,B2: B,C2: C,D2: D,E2: E,F3: F4,G2: G] : ( P2 @ ( product_Pair @ A @ ( product_prod @ B @ ( product_prod @ C @ ( product_prod @ D @ ( product_prod @ E @ ( product_prod @ F4 @ G ) ) ) ) ) @ A4 @ ( product_Pair @ B @ ( product_prod @ C @ ( product_prod @ D @ ( product_prod @ E @ ( product_prod @ F4 @ G ) ) ) ) @ B2 @ ( product_Pair @ C @ ( product_prod @ D @ ( product_prod @ E @ ( product_prod @ F4 @ G ) ) ) @ C2 @ ( product_Pair @ D @ ( product_prod @ E @ ( product_prod @ F4 @ G ) ) @ D2 @ ( product_Pair @ E @ ( product_prod @ F4 @ G ) @ E2 @ ( product_Pair @ F4 @ G @ F3 @ G2 ) ) ) ) ) ) )
     => ( P2 @ X ) ) ).

% prod_induct7
thf(fact_98_old_Oprod_Oexhaust,axiom,
    ! [A: $tType,B: $tType,Y: product_prod @ A @ B] :
      ~ ! [A4: A,B2: B] :
          ( Y
         != ( product_Pair @ A @ B @ A4 @ B2 ) ) ).

% old.prod.exhaust
thf(fact_99_old_Oprod_Oinducts,axiom,
    ! [B: $tType,A: $tType,P2: ( product_prod @ A @ B ) > $o,Prod: product_prod @ A @ B] :
      ( ! [A4: A,B2: B] : ( P2 @ ( product_Pair @ A @ B @ A4 @ B2 ) )
     => ( P2 @ Prod ) ) ).

% old.prod.inducts
thf(fact_100_comp__def,axiom,
    ! [A: $tType,C: $tType,B: $tType] :
      ( ( comp @ B @ C @ A )
      = ( ^ [F: B > C,G4: A > B,X6: A] : ( F @ ( G4 @ X6 ) ) ) ) ).

% comp_def
thf(fact_101_comp__assoc,axiom,
    ! [B: $tType,D: $tType,C: $tType,A: $tType,F2: D > B,G3: C > D,H: A > C] :
      ( ( comp @ C @ B @ A @ ( comp @ D @ B @ C @ F2 @ G3 ) @ H )
      = ( comp @ D @ B @ A @ F2 @ ( comp @ C @ D @ A @ G3 @ H ) ) ) ).

% comp_assoc
thf(fact_102_comp__eq__dest,axiom,
    ! [C: $tType,B: $tType,D: $tType,A: $tType,A3: C > B,B3: A > C,C3: D > B,D3: A > D,V: A] :
      ( ( ( comp @ C @ B @ A @ A3 @ B3 )
        = ( comp @ D @ B @ A @ C3 @ D3 ) )
     => ( ( A3 @ ( B3 @ V ) )
        = ( C3 @ ( D3 @ V ) ) ) ) ).

% comp_eq_dest
thf(fact_103_comp__eq__elim,axiom,
    ! [C: $tType,B: $tType,D: $tType,A: $tType,A3: C > B,B3: A > C,C3: D > B,D3: A > D] :
      ( ( ( comp @ C @ B @ A @ A3 @ B3 )
        = ( comp @ D @ B @ A @ C3 @ D3 ) )
     => ! [V2: A] :
          ( ( A3 @ ( B3 @ V2 ) )
          = ( C3 @ ( D3 @ V2 ) ) ) ) ).

% comp_eq_elim
thf(fact_104_comp__eq__dest__lhs,axiom,
    ! [C: $tType,B: $tType,A: $tType,A3: C > B,B3: A > C,C3: A > B,V: A] :
      ( ( ( comp @ C @ B @ A @ A3 @ B3 )
        = C3 )
     => ( ( A3 @ ( B3 @ V ) )
        = ( C3 @ V ) ) ) ).

% comp_eq_dest_lhs
thf(fact_105_szip_Osimps_I1_J,axiom,
    ! [A: $tType,B: $tType,S12: stream @ A,S23: stream @ B] :
      ( ( shd @ ( product_prod @ A @ B ) @ ( szip @ A @ B @ S12 @ S23 ) )
      = ( product_Pair @ A @ B @ ( shd @ A @ S12 ) @ ( shd @ B @ S23 ) ) ) ).

% szip.simps(1)
thf(fact_106_szip__unfold,axiom,
    ! [A: $tType,B: $tType,A3: A,S12: stream @ A,B3: B,S23: stream @ B] :
      ( ( szip @ A @ B @ ( sCons @ A @ A3 @ S12 ) @ ( sCons @ B @ B3 @ S23 ) )
      = ( sCons @ ( product_prod @ A @ B ) @ ( product_Pair @ A @ B @ A3 @ B3 ) @ ( szip @ A @ B @ S12 @ S23 ) ) ) ).

% szip_unfold
thf(fact_107_sp_092_060_094sub_062_092_060mu_062__comp_Osimps_I1_J,axiom,
    ! [B: $tType,C: $tType,A: $tType,D: $tType,B3: B,Sp3: C,Fsp2: stream901396144_sp_mu @ D @ A @ ( stream1273403375_sp_nu @ D @ A )] :
      ( ( stream1747196112u_comp @ A @ B @ C @ D @ ( stream1370332830mu_Put @ B @ C @ A @ B3 @ Sp3 ) @ Fsp2 )
      = ( stream1370332830mu_Put @ B @ ( product_prod @ C @ ( stream1273403375_sp_nu @ D @ A ) ) @ D @ B3 @ ( product_Pair @ C @ ( stream1273403375_sp_nu @ D @ A ) @ Sp3 @ ( stream1686501333_nu_In @ D @ A @ Fsp2 ) ) ) ) ).

% sp\<^sub>\<mu>_comp.simps(1)
thf(fact_108_old_Oprod_Orec,axiom,
    ! [A: $tType,T: $tType,B: $tType,F1: A > B > T,A3: A,B3: B] :
      ( ( product_rec_prod @ A @ B @ T @ F1 @ ( product_Pair @ A @ B @ A3 @ B3 ) )
      = ( F1 @ A3 @ B3 ) ) ).

% old.prod.rec
thf(fact_109_sp_092_060_094sub_062_092_060mu_062__comp_Opelims,axiom,
    ! [B: $tType,C: $tType,A: $tType,D: $tType,X: stream901396144_sp_mu @ A @ B @ C,Xa: stream901396144_sp_mu @ D @ A @ ( stream1273403375_sp_nu @ D @ A ),Y: stream901396144_sp_mu @ D @ B @ ( product_prod @ C @ ( stream1273403375_sp_nu @ D @ A ) )] :
      ( ( ( stream1747196112u_comp @ A @ B @ C @ D @ X @ Xa )
        = Y )
     => ( ( accp @ ( product_prod @ ( stream901396144_sp_mu @ A @ B @ C ) @ ( stream901396144_sp_mu @ D @ A @ ( stream1273403375_sp_nu @ D @ A ) ) ) @ ( stream592421929mp_rel @ A @ B @ C @ D ) @ ( product_Pair @ ( stream901396144_sp_mu @ A @ B @ C ) @ ( stream901396144_sp_mu @ D @ A @ ( stream1273403375_sp_nu @ D @ A ) ) @ X @ Xa ) )
       => ( ! [B2: B,Sp: C] :
              ( ( X
                = ( stream1370332830mu_Put @ B @ C @ A @ B2 @ Sp ) )
             => ( ( Y
                  = ( stream1370332830mu_Put @ B @ ( product_prod @ C @ ( stream1273403375_sp_nu @ D @ A ) ) @ D @ B2 @ ( product_Pair @ C @ ( stream1273403375_sp_nu @ D @ A ) @ Sp @ ( stream1686501333_nu_In @ D @ A @ Xa ) ) ) )
               => ~ ( accp @ ( product_prod @ ( stream901396144_sp_mu @ A @ B @ C ) @ ( stream901396144_sp_mu @ D @ A @ ( stream1273403375_sp_nu @ D @ A ) ) ) @ ( stream592421929mp_rel @ A @ B @ C @ D ) @ ( product_Pair @ ( stream901396144_sp_mu @ A @ B @ C ) @ ( stream901396144_sp_mu @ D @ A @ ( stream1273403375_sp_nu @ D @ A ) ) @ ( stream1370332830mu_Put @ B @ C @ A @ B2 @ Sp ) @ Xa ) ) ) )
         => ( ! [F3: A > ( stream901396144_sp_mu @ A @ B @ C )] :
                ( ( X
                  = ( stream1294929701mu_Get @ A @ B @ C @ F3 ) )
               => ! [B2: A,Sp: stream1273403375_sp_nu @ D @ A] :
                    ( ( Xa
                      = ( stream1370332830mu_Put @ A @ ( stream1273403375_sp_nu @ D @ A ) @ D @ B2 @ Sp ) )
                   => ( ( Y
                        = ( stream1747196112u_comp @ A @ B @ C @ D @ ( F3 @ B2 ) @ ( stream1200245950nu_out @ D @ A @ Sp ) ) )
                     => ~ ( accp @ ( product_prod @ ( stream901396144_sp_mu @ A @ B @ C ) @ ( stream901396144_sp_mu @ D @ A @ ( stream1273403375_sp_nu @ D @ A ) ) ) @ ( stream592421929mp_rel @ A @ B @ C @ D ) @ ( product_Pair @ ( stream901396144_sp_mu @ A @ B @ C ) @ ( stream901396144_sp_mu @ D @ A @ ( stream1273403375_sp_nu @ D @ A ) ) @ ( stream1294929701mu_Get @ A @ B @ C @ F3 ) @ ( stream1370332830mu_Put @ A @ ( stream1273403375_sp_nu @ D @ A ) @ D @ B2 @ Sp ) ) ) ) ) )
           => ~ ! [F3: A > ( stream901396144_sp_mu @ A @ B @ C )] :
                  ( ( X
                    = ( stream1294929701mu_Get @ A @ B @ C @ F3 ) )
                 => ! [G2: D > ( stream901396144_sp_mu @ D @ A @ ( stream1273403375_sp_nu @ D @ A ) )] :
                      ( ( Xa
                        = ( stream1294929701mu_Get @ D @ A @ ( stream1273403375_sp_nu @ D @ A ) @ G2 ) )
                     => ( ( Y
                          = ( stream1294929701mu_Get @ D @ B @ ( product_prod @ C @ ( stream1273403375_sp_nu @ D @ A ) )
                            @ ^ [A5: D] : ( stream1747196112u_comp @ A @ B @ C @ D @ ( stream1294929701mu_Get @ A @ B @ C @ F3 ) @ ( G2 @ A5 ) ) ) )
                       => ~ ( accp @ ( product_prod @ ( stream901396144_sp_mu @ A @ B @ C ) @ ( stream901396144_sp_mu @ D @ A @ ( stream1273403375_sp_nu @ D @ A ) ) ) @ ( stream592421929mp_rel @ A @ B @ C @ D ) @ ( product_Pair @ ( stream901396144_sp_mu @ A @ B @ C ) @ ( stream901396144_sp_mu @ D @ A @ ( stream1273403375_sp_nu @ D @ A ) ) @ ( stream1294929701mu_Get @ A @ B @ C @ F3 ) @ ( stream1294929701mu_Get @ D @ A @ ( stream1273403375_sp_nu @ D @ A ) @ G2 ) ) ) ) ) ) ) ) ) ) ).

% sp\<^sub>\<mu>_comp.pelims
thf(fact_110_internal__case__prod__conv,axiom,
    ! [B: $tType,A: $tType,C: $tType,C3: B > C > A,A3: B,B3: C] :
      ( ( produc2004651681e_prod @ B @ C @ A @ C3 @ ( product_Pair @ B @ C @ A3 @ B3 ) )
      = ( C3 @ A3 @ B3 ) ) ).

% internal_case_prod_conv
thf(fact_111_sdrop__while_Oraw__induct,axiom,
    ! [A: $tType,Pa: ( product_prod @ ( A > $o ) @ ( stream @ A ) ) > ( stream @ A ) > $o,P2: A > $o,S: stream @ A,Y: stream @ A] :
      ( ! [Sdrop_while: ( A > $o ) > ( stream @ A ) > ( stream @ A )] :
          ( ! [S4: A > $o,B6: stream @ A] :
              ( ( ( Sdrop_while @ S4 @ B6 )
               != ( undefined @ ( stream @ A ) ) )
             => ( Pa @ ( product_Pair @ ( A > $o ) @ ( stream @ A ) @ S4 @ B6 ) @ ( Sdrop_while @ S4 @ B6 ) ) )
         => ! [P4: A > $o,S2: stream @ A,Pa2: stream @ A] :
              ( ( ( ( P4 @ ( shd @ A @ S2 ) )
                 => ( ( Sdrop_while @ P4 @ ( stl @ A @ S2 ) )
                    = Pa2 ) )
                & ( ~ ( P4 @ ( shd @ A @ S2 ) )
                 => ( S2 = Pa2 ) ) )
             => ( ( Pa2
                 != ( undefined @ ( stream @ A ) ) )
               => ( Pa @ ( product_Pair @ ( A > $o ) @ ( stream @ A ) @ P4 @ S2 ) @ Pa2 ) ) ) )
     => ( ( ( sdrop_while @ A @ P2 @ S )
          = Y )
       => ( ( Y
           != ( undefined @ ( stream @ A ) ) )
         => ( Pa @ ( product_Pair @ ( A > $o ) @ ( stream @ A ) @ P2 @ S ) @ Y ) ) ) ) ).

% sdrop_while.raw_induct
thf(fact_112_sp_092_060_094sub_062_092_060mu_062__comp_Oelims,axiom,
    ! [A: $tType,C: $tType,B: $tType,D: $tType,X: stream901396144_sp_mu @ A @ B @ C,Xa: stream901396144_sp_mu @ D @ A @ ( stream1273403375_sp_nu @ D @ A ),Y: stream901396144_sp_mu @ D @ B @ ( product_prod @ C @ ( stream1273403375_sp_nu @ D @ A ) )] :
      ( ( ( stream1747196112u_comp @ A @ B @ C @ D @ X @ Xa )
        = Y )
     => ( ! [B2: B,Sp: C] :
            ( ( X
              = ( stream1370332830mu_Put @ B @ C @ A @ B2 @ Sp ) )
           => ( Y
             != ( stream1370332830mu_Put @ B @ ( product_prod @ C @ ( stream1273403375_sp_nu @ D @ A ) ) @ D @ B2 @ ( product_Pair @ C @ ( stream1273403375_sp_nu @ D @ A ) @ Sp @ ( stream1686501333_nu_In @ D @ A @ Xa ) ) ) ) )
       => ( ! [F3: A > ( stream901396144_sp_mu @ A @ B @ C )] :
              ( ( X
                = ( stream1294929701mu_Get @ A @ B @ C @ F3 ) )
             => ! [B2: A,Sp: stream1273403375_sp_nu @ D @ A] :
                  ( ( Xa
                    = ( stream1370332830mu_Put @ A @ ( stream1273403375_sp_nu @ D @ A ) @ D @ B2 @ Sp ) )
                 => ( Y
                   != ( stream1747196112u_comp @ A @ B @ C @ D @ ( F3 @ B2 ) @ ( stream1200245950nu_out @ D @ A @ Sp ) ) ) ) )
         => ~ ! [F3: A > ( stream901396144_sp_mu @ A @ B @ C )] :
                ( ( X
                  = ( stream1294929701mu_Get @ A @ B @ C @ F3 ) )
               => ! [G2: D > ( stream901396144_sp_mu @ D @ A @ ( stream1273403375_sp_nu @ D @ A ) )] :
                    ( ( Xa
                      = ( stream1294929701mu_Get @ D @ A @ ( stream1273403375_sp_nu @ D @ A ) @ G2 ) )
                   => ( Y
                     != ( stream1294929701mu_Get @ D @ B @ ( product_prod @ C @ ( stream1273403375_sp_nu @ D @ A ) )
                        @ ^ [A5: D] : ( stream1747196112u_comp @ A @ B @ C @ D @ ( stream1294929701mu_Get @ A @ B @ C @ F3 ) @ ( G2 @ A5 ) ) ) ) ) ) ) ) ) ).

% sp\<^sub>\<mu>_comp.elims
thf(fact_113_accp_Ocases,axiom,
    ! [A: $tType,R2: A > A > $o,A3: A] :
      ( ( accp @ A @ R2 @ A3 )
     => ! [Y4: A] :
          ( ( R2 @ Y4 @ A3 )
         => ( accp @ A @ R2 @ Y4 ) ) ) ).

% accp.cases
thf(fact_114_smap__smap2,axiom,
    ! [C: $tType,A: $tType,B: $tType,D: $tType,F2: B > A,G3: C > D > B,S12: stream @ C,S23: stream @ D] :
      ( ( smap @ B @ A @ F2 @ ( smap2 @ C @ D @ B @ G3 @ S12 @ S23 ) )
      = ( smap2 @ C @ D @ A
        @ ^ [X6: C,Y5: D] : ( F2 @ ( G3 @ X6 @ Y5 ) )
        @ S12
        @ S23 ) ) ).

% smap_smap2
thf(fact_115_stream_Ocase__distrib,axiom,
    ! [B: $tType,C: $tType,A: $tType,H: B > C,F2: A > ( stream @ A ) > B,Stream: stream @ A] :
      ( ( H @ ( case_stream @ A @ B @ F2 @ Stream ) )
      = ( case_stream @ A @ C
        @ ^ [X13: A,X24: stream @ A] : ( H @ ( F2 @ X13 @ X24 ) )
        @ Stream ) ) ).

% stream.case_distrib
thf(fact_116_stl__def,axiom,
    ! [A: $tType] :
      ( ( stl @ A )
      = ( case_stream @ A @ ( stream @ A )
        @ ^ [X13: A,X24: stream @ A] : X24 ) ) ).

% stl_def
thf(fact_117_sp_092_060_094sub_062_092_060nu_062_Ocase__distrib,axiom,
    ! [D: $tType,C: $tType,B: $tType,A: $tType,H: C > D,F2: ( stream901396144_sp_mu @ A @ B @ ( stream1273403375_sp_nu @ A @ B ) ) > C,Sp_nu: stream1273403375_sp_nu @ A @ B] :
      ( ( H @ ( stream1502363800_sp_nu @ A @ B @ C @ F2 @ Sp_nu ) )
      = ( stream1502363800_sp_nu @ A @ B @ D
        @ ^ [X6: stream901396144_sp_mu @ A @ B @ ( stream1273403375_sp_nu @ A @ B )] : ( H @ ( F2 @ X6 ) )
        @ Sp_nu ) ) ).

% sp\<^sub>\<nu>.case_distrib
thf(fact_118_out__def,axiom,
    ! [B: $tType,A: $tType] :
      ( ( stream1200245950nu_out @ A @ B )
      = ( stream1502363800_sp_nu @ A @ B @ ( stream901396144_sp_mu @ A @ B @ ( stream1273403375_sp_nu @ A @ B ) )
        @ ^ [X6: stream901396144_sp_mu @ A @ B @ ( stream1273403375_sp_nu @ A @ B )] : X6 ) ) ).

% out_def
thf(fact_119_stream_Omap__ident,axiom,
    ! [A: $tType,T2: stream @ A] :
      ( ( smap @ A @ A
        @ ^ [X6: A] : X6
        @ T2 )
      = T2 ) ).

% stream.map_ident
thf(fact_120_shd__def,axiom,
    ! [A: $tType] :
      ( ( shd @ A )
      = ( case_stream @ A @ A
        @ ^ [X13: A,X24: stream @ A] : X13 ) ) ).

% shd_def
thf(fact_121_sp_092_060_094sub_062_092_060mu_062__comp_Osimps_I3_J,axiom,
    ! [A: $tType,C: $tType,B: $tType,D: $tType,F2: A > ( stream901396144_sp_mu @ A @ B @ C ),G3: D > ( stream901396144_sp_mu @ D @ A @ ( stream1273403375_sp_nu @ D @ A ) )] :
      ( ( stream1747196112u_comp @ A @ B @ C @ D @ ( stream1294929701mu_Get @ A @ B @ C @ F2 ) @ ( stream1294929701mu_Get @ D @ A @ ( stream1273403375_sp_nu @ D @ A ) @ G3 ) )
      = ( stream1294929701mu_Get @ D @ B @ ( product_prod @ C @ ( stream1273403375_sp_nu @ D @ A ) )
        @ ^ [A5: D] : ( stream1747196112u_comp @ A @ B @ C @ D @ ( stream1294929701mu_Get @ A @ B @ C @ F2 ) @ ( G3 @ A5 ) ) ) ) ).

% sp\<^sub>\<mu>_comp.simps(3)
thf(fact_122_copy_Osimps,axiom,
    ! [A: $tType] :
      ( ( stream1200245950nu_out @ A @ A @ ( stream2017582925e_copy @ A ) )
      = ( stream1294929701mu_Get @ A @ A @ ( stream1273403375_sp_nu @ A @ A )
        @ ^ [A5: A] : ( stream1370332830mu_Put @ A @ ( stream1273403375_sp_nu @ A @ A ) @ A @ A5 @ ( stream2017582925e_copy @ A ) ) ) ) ).

% copy.simps
thf(fact_123_copy_Ocode,axiom,
    ! [A: $tType] :
      ( ( stream2017582925e_copy @ A )
      = ( stream1686501333_nu_In @ A @ A
        @ ( stream1294929701mu_Get @ A @ A @ ( stream1273403375_sp_nu @ A @ A )
          @ ^ [A5: A] : ( stream1370332830mu_Put @ A @ ( stream1273403375_sp_nu @ A @ A ) @ A @ A5 @ ( stream2017582925e_copy @ A ) ) ) ) ) ).

% copy.code
thf(fact_124_sp_092_060_094sub_062_092_060mu_062__comp_Opsimps_I3_J,axiom,
    ! [A: $tType,C: $tType,B: $tType,D: $tType,F2: A > ( stream901396144_sp_mu @ A @ B @ C ),G3: D > ( stream901396144_sp_mu @ D @ A @ ( stream1273403375_sp_nu @ D @ A ) )] :
      ( ( accp @ ( product_prod @ ( stream901396144_sp_mu @ A @ B @ C ) @ ( stream901396144_sp_mu @ D @ A @ ( stream1273403375_sp_nu @ D @ A ) ) ) @ ( stream592421929mp_rel @ A @ B @ C @ D ) @ ( product_Pair @ ( stream901396144_sp_mu @ A @ B @ C ) @ ( stream901396144_sp_mu @ D @ A @ ( stream1273403375_sp_nu @ D @ A ) ) @ ( stream1294929701mu_Get @ A @ B @ C @ F2 ) @ ( stream1294929701mu_Get @ D @ A @ ( stream1273403375_sp_nu @ D @ A ) @ G3 ) ) )
     => ( ( stream1747196112u_comp @ A @ B @ C @ D @ ( stream1294929701mu_Get @ A @ B @ C @ F2 ) @ ( stream1294929701mu_Get @ D @ A @ ( stream1273403375_sp_nu @ D @ A ) @ G3 ) )
        = ( stream1294929701mu_Get @ D @ B @ ( product_prod @ C @ ( stream1273403375_sp_nu @ D @ A ) )
          @ ^ [A5: D] : ( stream1747196112u_comp @ A @ B @ C @ D @ ( stream1294929701mu_Get @ A @ B @ C @ F2 ) @ ( G3 @ A5 ) ) ) ) ) ).

% sp\<^sub>\<mu>_comp.psimps(3)
thf(fact_125_accp__induct__rule,axiom,
    ! [A: $tType,R2: A > A > $o,A3: A,P2: A > $o] :
      ( ( accp @ A @ R2 @ A3 )
     => ( ! [X4: A] :
            ( ( accp @ A @ R2 @ X4 )
           => ( ! [Y4: A] :
                  ( ( R2 @ Y4 @ X4 )
                 => ( P2 @ Y4 ) )
             => ( P2 @ X4 ) ) )
       => ( P2 @ A3 ) ) ) ).

% accp_induct_rule
thf(fact_126_not__accp__down,axiom,
    ! [A: $tType,R: A > A > $o,X: A] :
      ( ~ ( accp @ A @ R @ X )
     => ~ ! [Z: A] :
            ( ( R @ Z @ X )
           => ( accp @ A @ R @ Z ) ) ) ).

% not_accp_down
thf(fact_127_accp__downward,axiom,
    ! [A: $tType,R2: A > A > $o,B3: A,A3: A] :
      ( ( accp @ A @ R2 @ B3 )
     => ( ( R2 @ A3 @ B3 )
       => ( accp @ A @ R2 @ A3 ) ) ) ).

% accp_downward
thf(fact_128_accp_Oinducts,axiom,
    ! [A: $tType,R2: A > A > $o,X: A,P2: A > $o] :
      ( ( accp @ A @ R2 @ X )
     => ( ! [X4: A] :
            ( ! [Y4: A] :
                ( ( R2 @ Y4 @ X4 )
               => ( accp @ A @ R2 @ Y4 ) )
           => ( ! [Y4: A] :
                  ( ( R2 @ Y4 @ X4 )
                 => ( P2 @ Y4 ) )
             => ( P2 @ X4 ) ) )
       => ( P2 @ X ) ) ) ).

% accp.inducts
thf(fact_129_accp__induct,axiom,
    ! [A: $tType,R2: A > A > $o,A3: A,P2: A > $o] :
      ( ( accp @ A @ R2 @ A3 )
     => ( ! [X4: A] :
            ( ( accp @ A @ R2 @ X4 )
           => ( ! [Y4: A] :
                  ( ( R2 @ Y4 @ X4 )
                 => ( P2 @ Y4 ) )
             => ( P2 @ X4 ) ) )
       => ( P2 @ A3 ) ) ) ).

% accp_induct
thf(fact_130_accp_Ointros,axiom,
    ! [A: $tType,R2: A > A > $o,X: A] :
      ( ! [Y3: A] :
          ( ( R2 @ Y3 @ X )
         => ( accp @ A @ R2 @ Y3 ) )
     => ( accp @ A @ R2 @ X ) ) ).

% accp.intros
thf(fact_131_accp_Osimps,axiom,
    ! [A: $tType] :
      ( ( accp @ A )
      = ( ^ [R3: A > A > $o,A5: A] :
          ? [X6: A] :
            ( ( A5 = X6 )
            & ! [Y5: A] :
                ( ( R3 @ Y5 @ X6 )
               => ( accp @ A @ R3 @ Y5 ) ) ) ) ) ).

% accp.simps
thf(fact_132_in__lex__prod,axiom,
    ! [A: $tType,B: $tType,A3: A,B3: B,A7: A,B5: B,R2: set @ ( product_prod @ A @ A ),S: set @ ( product_prod @ B @ B )] :
      ( ( member @ ( product_prod @ ( product_prod @ A @ B ) @ ( product_prod @ A @ B ) ) @ ( product_Pair @ ( product_prod @ A @ B ) @ ( product_prod @ A @ B ) @ ( product_Pair @ A @ B @ A3 @ B3 ) @ ( product_Pair @ A @ B @ A7 @ B5 ) ) @ ( lex_prod @ A @ B @ R2 @ S ) )
      = ( ( member @ ( product_prod @ A @ A ) @ ( product_Pair @ A @ A @ A3 @ A7 ) @ R2 )
        | ( ( A3 = A7 )
          & ( member @ ( product_prod @ B @ B ) @ ( product_Pair @ B @ B @ B3 @ B5 ) @ S ) ) ) ) ).

% in_lex_prod
thf(fact_133_sp_092_060_094sub_062_092_060mu_062_Osimps_I7_J,axiom,
    ! [G: $tType,C: $tType,B: $tType,A: $tType,F1: ( A > ( product_prod @ ( stream901396144_sp_mu @ A @ B @ C ) @ G ) ) > G,F22: B > C > G,X1: A > ( stream901396144_sp_mu @ A @ B @ C )] :
      ( ( stream674629690_sp_mu @ A @ B @ C @ G @ F1 @ F22 @ ( stream1294929701mu_Get @ A @ B @ C @ X1 ) )
      = ( F1
        @ ( comp @ ( stream901396144_sp_mu @ A @ B @ C ) @ ( product_prod @ ( stream901396144_sp_mu @ A @ B @ C ) @ G ) @ A
          @ ^ [Sp_mu: stream901396144_sp_mu @ A @ B @ C] : ( product_Pair @ ( stream901396144_sp_mu @ A @ B @ C ) @ G @ Sp_mu @ ( stream674629690_sp_mu @ A @ B @ C @ G @ F1 @ F22 @ Sp_mu ) )
          @ X1 ) ) ) ).

% sp\<^sub>\<mu>.simps(7)
thf(fact_134_conj__comp__iff,axiom,
    ! [B: $tType,A: $tType,P2: B > $o,Q: B > $o,G3: A > B] :
      ( ( comp @ B @ $o @ A
        @ ^ [X6: B] :
            ( ( P2 @ X6 )
            & ( Q @ X6 ) )
        @ G3 )
      = ( ^ [X6: A] :
            ( ( comp @ B @ $o @ A @ P2 @ G3 @ X6 )
            & ( comp @ B @ $o @ A @ Q @ G3 @ X6 ) ) ) ) ).

% conj_comp_iff
thf(fact_135_fun_Omap__ident,axiom,
    ! [A: $tType,D: $tType,T2: D > A] :
      ( ( comp @ A @ A @ D
        @ ^ [X6: A] : X6
        @ T2 )
      = T2 ) ).

% fun.map_ident
thf(fact_136_K__record__comp,axiom,
    ! [C: $tType,B: $tType,A: $tType,C3: B,F2: A > C] :
      ( ( comp @ C @ B @ A
        @ ^ [X6: C] : C3
        @ F2 )
      = ( ^ [X6: A] : C3 ) ) ).

% K_record_comp
thf(fact_137_sp_092_060_094sub_062_092_060mu_062_Osimps_I8_J,axiom,
    ! [A: $tType,B: $tType,G: $tType,C: $tType,F1: ( A > ( product_prod @ ( stream901396144_sp_mu @ A @ B @ C ) @ G ) ) > G,F22: B > C > G,X21: B,X22: C] :
      ( ( stream674629690_sp_mu @ A @ B @ C @ G @ F1 @ F22 @ ( stream1370332830mu_Put @ B @ C @ A @ X21 @ X22 ) )
      = ( F22 @ X21 @ X22 ) ) ).

% sp\<^sub>\<mu>.simps(8)
thf(fact_138_fun_Omap__comp,axiom,
    ! [B: $tType,C: $tType,A: $tType,D: $tType,G3: B > C,F2: A > B,V: D > A] :
      ( ( comp @ B @ C @ D @ G3 @ ( comp @ A @ B @ D @ F2 @ V ) )
      = ( comp @ A @ C @ D @ ( comp @ B @ C @ A @ G3 @ F2 ) @ V ) ) ).

% fun.map_comp
thf(fact_139_type__copy__map__cong0,axiom,
    ! [B: $tType,D: $tType,E: $tType,A: $tType,C: $tType,M: B > A,G3: C > B,X: C,N: D > A,H: C > D,F2: A > E] :
      ( ( ( M @ ( G3 @ X ) )
        = ( N @ ( H @ X ) ) )
     => ( ( comp @ B @ E @ C @ ( comp @ A @ E @ B @ F2 @ M ) @ G3 @ X )
        = ( comp @ D @ E @ C @ ( comp @ A @ E @ D @ F2 @ N ) @ H @ X ) ) ) ).

% type_copy_map_cong0
thf(fact_140_pred__equals__eq2,axiom,
    ! [B: $tType,A: $tType,R: set @ ( product_prod @ A @ B ),S5: set @ ( product_prod @ A @ B )] :
      ( ( ( ^ [X6: A,Y5: B] : ( member @ ( product_prod @ A @ B ) @ ( product_Pair @ A @ B @ X6 @ Y5 ) @ R ) )
        = ( ^ [X6: A,Y5: B] : ( member @ ( product_prod @ A @ B ) @ ( product_Pair @ A @ B @ X6 @ Y5 ) @ S5 ) ) )
      = ( R = S5 ) ) ).

% pred_equals_eq2
thf(fact_141_same__fstI,axiom,
    ! [B: $tType,A: $tType,P2: A > $o,X: A,Y6: B,Y: B,R: A > ( set @ ( product_prod @ B @ B ) )] :
      ( ( P2 @ X )
     => ( ( member @ ( product_prod @ B @ B ) @ ( product_Pair @ B @ B @ Y6 @ Y ) @ ( R @ X ) )
       => ( member @ ( product_prod @ ( product_prod @ A @ B ) @ ( product_prod @ A @ B ) ) @ ( product_Pair @ ( product_prod @ A @ B ) @ ( product_prod @ A @ B ) @ ( product_Pair @ A @ B @ X @ Y6 ) @ ( product_Pair @ A @ B @ X @ Y ) ) @ ( same_fst @ A @ B @ P2 @ R ) ) ) ) ).

% same_fstI
thf(fact_142_fun_Opred__map,axiom,
    ! [B: $tType,A: $tType,D: $tType,Q: B > $o,F2: A > B,X: D > A] :
      ( ( basic_pred_fun @ D @ B
        @ ^ [Uu: D] : $true
        @ Q
        @ ( comp @ A @ B @ D @ F2 @ X ) )
      = ( basic_pred_fun @ D @ A
        @ ^ [Uu: D] : $true
        @ ( comp @ B @ $o @ A @ Q @ F2 )
        @ X ) ) ).

% fun.pred_map
thf(fact_143_stream_Opred__map,axiom,
    ! [B: $tType,A: $tType,Q: B > $o,F2: A > B,X: stream @ A] :
      ( ( pred_stream @ B @ Q @ ( smap @ A @ B @ F2 @ X ) )
      = ( pred_stream @ A @ ( comp @ B @ $o @ A @ Q @ F2 ) @ X ) ) ).

% stream.pred_map
thf(fact_144_stream_Opred__inject,axiom,
    ! [A: $tType,P2: A > $o,A3: A,Aa2: stream @ A] :
      ( ( pred_stream @ A @ P2 @ ( sCons @ A @ A3 @ Aa2 ) )
      = ( ( P2 @ A3 )
        & ( pred_stream @ A @ P2 @ Aa2 ) ) ) ).

% stream.pred_inject
thf(fact_145_fun_Opred__True,axiom,
    ! [A: $tType,D: $tType] :
      ( ( basic_pred_fun @ D @ A
        @ ^ [Uu: D] : $true
        @ ^ [Uu: A] : $true )
      = ( ^ [Uu: D > A] : $true ) ) ).

% fun.pred_True
thf(fact_146_pred__funI,axiom,
    ! [B: $tType,A: $tType,A2: A > $o,B4: B > $o,F2: A > B] :
      ( ! [X4: A] :
          ( ( A2 @ X4 )
         => ( B4 @ ( F2 @ X4 ) ) )
     => ( basic_pred_fun @ A @ B @ A2 @ B4 @ F2 ) ) ).

% pred_funI
thf(fact_147_stream_Opred__True,axiom,
    ! [A: $tType] :
      ( ( pred_stream @ A
        @ ^ [Uu: A] : $true )
      = ( ^ [Uu: stream @ A] : $true ) ) ).

% stream.pred_True
thf(fact_148_fun_Omap__cong__pred,axiom,
    ! [B: $tType,A: $tType,D: $tType,X: D > A,Ya: D > A,F2: A > B,G3: A > B] :
      ( ( X = Ya )
     => ( ( basic_pred_fun @ D @ A
          @ ^ [Uu: D] : $true
          @ ^ [Z2: A] :
              ( ( F2 @ Z2 )
              = ( G3 @ Z2 ) )
          @ Ya )
       => ( ( comp @ A @ B @ D @ F2 @ X )
          = ( comp @ A @ B @ D @ G3 @ Ya ) ) ) ) ).

% fun.map_cong_pred
thf(fact_149_stream_Omap__cong__pred,axiom,
    ! [B: $tType,A: $tType,X: stream @ A,Ya: stream @ A,F2: A > B,G3: A > B] :
      ( ( X = Ya )
     => ( ( pred_stream @ A
          @ ^ [Z2: A] :
              ( ( F2 @ Z2 )
              = ( G3 @ Z2 ) )
          @ Ya )
       => ( ( smap @ A @ B @ F2 @ X )
          = ( smap @ A @ B @ G3 @ Ya ) ) ) ) ).

% stream.map_cong_pred
thf(fact_150_cut__def,axiom,
    ! [B: $tType,A: $tType] :
      ( ( cut @ A @ B )
      = ( ^ [F: A > B,R4: set @ ( product_prod @ A @ A ),X6: A,Y5: A] : ( if @ B @ ( member @ ( product_prod @ A @ A ) @ ( product_Pair @ A @ A @ Y5 @ X6 ) @ R4 ) @ ( F @ Y5 ) @ ( undefined @ B ) ) ) ) ).

% cut_def
thf(fact_151_rewriteR__comp__comp2,axiom,
    ! [C: $tType,B: $tType,E: $tType,D: $tType,A: $tType,G3: C > B,H: A > C,R1: D > B,R22: A > D,F2: B > E,L: D > E] :
      ( ( ( comp @ C @ B @ A @ G3 @ H )
        = ( comp @ D @ B @ A @ R1 @ R22 ) )
     => ( ( ( comp @ B @ E @ D @ F2 @ R1 )
          = L )
       => ( ( comp @ C @ E @ A @ ( comp @ B @ E @ C @ F2 @ G3 ) @ H )
          = ( comp @ D @ E @ A @ L @ R22 ) ) ) ) ).

% rewriteR_comp_comp2
thf(fact_152_rewriteL__comp__comp2,axiom,
    ! [A: $tType,C: $tType,B: $tType,D: $tType,E: $tType,F2: C > B,G3: A > C,L1: D > B,L2: A > D,H: E > A,R2: E > D] :
      ( ( ( comp @ C @ B @ A @ F2 @ G3 )
        = ( comp @ D @ B @ A @ L1 @ L2 ) )
     => ( ( ( comp @ A @ D @ E @ L2 @ H )
          = R2 )
       => ( ( comp @ C @ B @ E @ F2 @ ( comp @ A @ C @ E @ G3 @ H ) )
          = ( comp @ D @ B @ E @ L1 @ R2 ) ) ) ) ).

% rewriteL_comp_comp2
thf(fact_153_rewriteR__comp__comp,axiom,
    ! [C: $tType,D: $tType,B: $tType,A: $tType,G3: C > B,H: A > C,R2: A > B,F2: B > D] :
      ( ( ( comp @ C @ B @ A @ G3 @ H )
        = R2 )
     => ( ( comp @ C @ D @ A @ ( comp @ B @ D @ C @ F2 @ G3 ) @ H )
        = ( comp @ B @ D @ A @ F2 @ R2 ) ) ) ).

% rewriteR_comp_comp
thf(fact_154_cuts__eq,axiom,
    ! [B: $tType,A: $tType,F2: A > B,R: set @ ( product_prod @ A @ A ),X: A,G3: A > B] :
      ( ( ( cut @ A @ B @ F2 @ R @ X )
        = ( cut @ A @ B @ G3 @ R @ X ) )
      = ( ! [Y5: A] :
            ( ( member @ ( product_prod @ A @ A ) @ ( product_Pair @ A @ A @ Y5 @ X ) @ R )
           => ( ( F2 @ Y5 )
              = ( G3 @ Y5 ) ) ) ) ) ).

% cuts_eq
thf(fact_155_cut__apply,axiom,
    ! [B: $tType,A: $tType,X: A,A3: A,R: set @ ( product_prod @ A @ A ),F2: A > B] :
      ( ( member @ ( product_prod @ A @ A ) @ ( product_Pair @ A @ A @ X @ A3 ) @ R )
     => ( ( cut @ A @ B @ F2 @ R @ A3 @ X )
        = ( F2 @ X ) ) ) ).

% cut_apply
thf(fact_156_rewriteL__comp__comp,axiom,
    ! [C: $tType,B: $tType,A: $tType,D: $tType,F2: C > B,G3: A > C,L: A > B,H: D > A] :
      ( ( ( comp @ C @ B @ A @ F2 @ G3 )
        = L )
     => ( ( comp @ C @ B @ D @ F2 @ ( comp @ A @ C @ D @ G3 @ H ) )
        = ( comp @ A @ B @ D @ L @ H ) ) ) ).

% rewriteL_comp_comp
thf(fact_157_adm__lemma,axiom,
    ! [B: $tType,A: $tType,R: set @ ( product_prod @ A @ A ),F5: ( A > B ) > A > B] :
      ( adm_wf @ A @ B @ R
      @ ^ [F: A > B,X6: A] : ( F5 @ ( cut @ A @ B @ F @ R @ X6 ) @ X6 ) ) ).

% adm_lemma
thf(fact_158_convol__o,axiom,
    ! [B: $tType,C: $tType,D: $tType,A: $tType,F2: D > B,G3: D > C,H: A > D] :
      ( ( comp @ D @ ( product_prod @ B @ C ) @ A @ ( bNF_convol @ D @ B @ C @ F2 @ G3 ) @ H )
      = ( bNF_convol @ A @ B @ C @ ( comp @ D @ B @ A @ F2 @ H ) @ ( comp @ D @ C @ A @ G3 @ H ) ) ) ).

% convol_o
thf(fact_159_comp__cong,axiom,
    ! [C: $tType,B: $tType,D: $tType,A: $tType,E: $tType,F2: B > A,G3: C > B,X: C,F6: D > A,G5: E > D,X7: E] :
      ( ( ( F2 @ ( G3 @ X ) )
        = ( F6 @ ( G5 @ X7 ) ) )
     => ( ( comp @ B @ A @ C @ F2 @ G3 @ X )
        = ( comp @ D @ A @ E @ F6 @ G5 @ X7 ) ) ) ).

% comp_cong
thf(fact_160_adm__wf__def,axiom,
    ! [B: $tType,A: $tType] :
      ( ( adm_wf @ A @ B )
      = ( ^ [R4: set @ ( product_prod @ A @ A ),F7: ( A > B ) > A > B] :
          ! [F: A > B,G4: A > B,X6: A] :
            ( ! [Z2: A] :
                ( ( member @ ( product_prod @ A @ A ) @ ( product_Pair @ A @ A @ Z2 @ X6 ) @ R4 )
               => ( ( F @ Z2 )
                  = ( G4 @ Z2 ) ) )
           => ( ( F7 @ F @ X6 )
              = ( F7 @ G4 @ X6 ) ) ) ) ) ).

% adm_wf_def
thf(fact_161_convol__def,axiom,
    ! [C: $tType,B: $tType,A: $tType] :
      ( ( bNF_convol @ A @ B @ C )
      = ( ^ [F: A > B,G4: A > C,A5: A] : ( product_Pair @ B @ C @ ( F @ A5 ) @ ( G4 @ A5 ) ) ) ) ).

% convol_def
thf(fact_162_comp__apply__eq,axiom,
    ! [B: $tType,D: $tType,A: $tType,C: $tType,F2: B > A,G3: C > B,X: C,H: D > A,K: C > D] :
      ( ( ( F2 @ ( G3 @ X ) )
        = ( H @ ( K @ X ) ) )
     => ( ( comp @ B @ A @ C @ F2 @ G3 @ X )
        = ( comp @ D @ A @ C @ H @ K @ X ) ) ) ).

% comp_apply_eq
thf(fact_163_ssubst__Pair__rhs,axiom,
    ! [B: $tType,A: $tType,R2: A,S: B,R: set @ ( product_prod @ A @ B ),S6: B] :
      ( ( member @ ( product_prod @ A @ B ) @ ( product_Pair @ A @ B @ R2 @ S ) @ R )
     => ( ( S6 = S )
       => ( member @ ( product_prod @ A @ B ) @ ( product_Pair @ A @ B @ R2 @ S6 ) @ R ) ) ) ).

% ssubst_Pair_rhs
thf(fact_164_curry__conv,axiom,
    ! [A: $tType,C: $tType,B: $tType] :
      ( ( product_curry @ B @ C @ A )
      = ( ^ [F: ( product_prod @ B @ C ) > A,A5: B,B7: C] : ( F @ ( product_Pair @ B @ C @ A5 @ B7 ) ) ) ) ).

% curry_conv
thf(fact_165_streamsp__streams__eq,axiom,
    ! [A: $tType,A2: set @ A] :
      ( ( streamsp @ A
        @ ^ [X6: A] : ( member @ A @ X6 @ A2 ) )
      = ( ^ [X6: stream @ A] : ( member @ ( stream @ A ) @ X6 @ ( streams @ A @ A2 ) ) ) ) ).

% streamsp_streams_eq
thf(fact_166_streams__def,axiom,
    ! [A: $tType] :
      ( ( streams @ A )
      = ( ^ [A8: set @ A] :
            ( collect @ ( stream @ A )
            @ ( streamsp @ A
              @ ^ [X6: A] : ( member @ A @ X6 @ A8 ) ) ) ) ) ).

% streams_def
thf(fact_167_curryI,axiom,
    ! [A: $tType,B: $tType,F2: ( product_prod @ A @ B ) > $o,A3: A,B3: B] :
      ( ( F2 @ ( product_Pair @ A @ B @ A3 @ B3 ) )
     => ( product_curry @ A @ B @ $o @ F2 @ A3 @ B3 ) ) ).

% curryI
thf(fact_168_curry__K,axiom,
    ! [B: $tType,C: $tType,A: $tType,C3: C] :
      ( ( product_curry @ A @ B @ C
        @ ^ [X6: product_prod @ A @ B] : C3 )
      = ( ^ [X6: A,Y5: B] : C3 ) ) ).

% curry_K
thf(fact_169_curryE,axiom,
    ! [A: $tType,B: $tType,F2: ( product_prod @ A @ B ) > $o,A3: A,B3: B] :
      ( ( product_curry @ A @ B @ $o @ F2 @ A3 @ B3 )
     => ( F2 @ ( product_Pair @ A @ B @ A3 @ B3 ) ) ) ).

% curryE
thf(fact_170_curryD,axiom,
    ! [A: $tType,B: $tType,F2: ( product_prod @ A @ B ) > $o,A3: A,B3: B] :
      ( ( product_curry @ A @ B @ $o @ F2 @ A3 @ B3 )
     => ( F2 @ ( product_Pair @ A @ B @ A3 @ B3 ) ) ) ).

% curryD
thf(fact_171_streamsp_Ocoinduct,axiom,
    ! [A: $tType,X3: ( stream @ A ) > $o,X: stream @ A,A2: A > $o] :
      ( ( X3 @ X )
     => ( ! [X4: stream @ A] :
            ( ( X3 @ X4 )
           => ? [A6: A,S4: stream @ A] :
                ( ( X4
                  = ( sCons @ A @ A6 @ S4 ) )
                & ( A2 @ A6 )
                & ( ( X3 @ S4 )
                  | ( streamsp @ A @ A2 @ S4 ) ) ) )
       => ( streamsp @ A @ A2 @ X ) ) ) ).

% streamsp.coinduct
thf(fact_172_streamsp_Osimps,axiom,
    ! [A: $tType] :
      ( ( streamsp @ A )
      = ( ^ [A8: A > $o,A5: stream @ A] :
          ? [B7: A,S3: stream @ A] :
            ( ( A5
              = ( sCons @ A @ B7 @ S3 ) )
            & ( A8 @ B7 )
            & ( streamsp @ A @ A8 @ S3 ) ) ) ) ).

% streamsp.simps
thf(fact_173_streamsp_Ocases,axiom,
    ! [A: $tType,A2: A > $o,A3: stream @ A] :
      ( ( streamsp @ A @ A2 @ A3 )
     => ~ ! [A4: A,S2: stream @ A] :
            ( ( A3
              = ( sCons @ A @ A4 @ S2 ) )
           => ( ( A2 @ A4 )
             => ~ ( streamsp @ A @ A2 @ S2 ) ) ) ) ).

% streamsp.cases
thf(fact_174_curry__def,axiom,
    ! [C: $tType,B: $tType,A: $tType] :
      ( ( product_curry @ A @ B @ C )
      = ( ^ [C4: ( product_prod @ A @ B ) > C,X6: A,Y5: B] : ( C4 @ ( product_Pair @ A @ B @ X6 @ Y5 ) ) ) ) ).

% curry_def
thf(fact_175_accp__acc__eq,axiom,
    ! [A: $tType,R2: set @ ( product_prod @ A @ A )] :
      ( ( accp @ A
        @ ^ [X6: A,Y5: A] : ( member @ ( product_prod @ A @ A ) @ ( product_Pair @ A @ A @ X6 @ Y5 ) @ R2 ) )
      = ( ^ [X6: A] : ( member @ A @ X6 @ ( acc @ A @ R2 ) ) ) ) ).

% accp_acc_eq
thf(fact_176_acc__def,axiom,
    ! [A: $tType] :
      ( ( acc @ A )
      = ( ^ [R3: set @ ( product_prod @ A @ A )] :
            ( collect @ A
            @ ( accp @ A
              @ ^ [X6: A,Y5: A] : ( member @ ( product_prod @ A @ A ) @ ( product_Pair @ A @ A @ X6 @ Y5 ) @ R3 ) ) ) ) ) ).

% acc_def
thf(fact_177_sp_092_060_094sub_062_092_060mu_062_Opred__inject_I1_J,axiom,
    ! [C: $tType,B: $tType,A: $tType,P1: B > $o,P22: C > $o,A3: A > ( stream901396144_sp_mu @ A @ B @ C )] :
      ( ( stream123009735_sp_mu @ B @ C @ A @ P1 @ P22 @ ( stream1294929701mu_Get @ A @ B @ C @ A3 ) )
      = ( basic_pred_fun @ A @ ( stream901396144_sp_mu @ A @ B @ C )
        @ ^ [Uu: A] : $true
        @ ( stream123009735_sp_mu @ B @ C @ A @ P1 @ P22 )
        @ A3 ) ) ).

% sp\<^sub>\<mu>.pred_inject(1)
thf(fact_178_sp_092_060_094sub_062_092_060mu_062_Opred__inject_I2_J,axiom,
    ! [A: $tType,B: $tType,C: $tType,P1: B > $o,P22: C > $o,A3: B,Aa2: C] :
      ( ( stream123009735_sp_mu @ B @ C @ A @ P1 @ P22 @ ( stream1370332830mu_Put @ B @ C @ A @ A3 @ Aa2 ) )
      = ( ( P1 @ A3 )
        & ( P22 @ Aa2 ) ) ) ).

% sp\<^sub>\<mu>.pred_inject(2)
thf(fact_179_sp_092_060_094sub_062_092_060mu_062_Opred__True,axiom,
    ! [B: $tType,A: $tType,G: $tType] :
      ( ( stream123009735_sp_mu @ A @ B @ G
        @ ^ [Uu: A] : $true
        @ ^ [Uu: B] : $true )
      = ( ^ [Uu: stream901396144_sp_mu @ G @ A @ B] : $true ) ) ).

% sp\<^sub>\<mu>.pred_True
thf(fact_180_acc__induct__rule,axiom,
    ! [A: $tType,A3: A,R2: set @ ( product_prod @ A @ A ),P2: A > $o] :
      ( ( member @ A @ A3 @ ( acc @ A @ R2 ) )
     => ( ! [X4: A] :
            ( ( member @ A @ X4 @ ( acc @ A @ R2 ) )
           => ( ! [Y4: A] :
                  ( ( member @ ( product_prod @ A @ A ) @ ( product_Pair @ A @ A @ Y4 @ X4 ) @ R2 )
                 => ( P2 @ Y4 ) )
             => ( P2 @ X4 ) ) )
       => ( P2 @ A3 ) ) ) ).

% acc_induct_rule
thf(fact_181_not__acc__down,axiom,
    ! [A: $tType,X: A,R: set @ ( product_prod @ A @ A )] :
      ( ~ ( member @ A @ X @ ( acc @ A @ R ) )
     => ~ ! [Z: A] :
            ( ( member @ ( product_prod @ A @ A ) @ ( product_Pair @ A @ A @ Z @ X ) @ R )
           => ( member @ A @ Z @ ( acc @ A @ R ) ) ) ) ).

% not_acc_down
thf(fact_182_acc__downward,axiom,
    ! [A: $tType,B3: A,R2: set @ ( product_prod @ A @ A ),A3: A] :
      ( ( member @ A @ B3 @ ( acc @ A @ R2 ) )
     => ( ( member @ ( product_prod @ A @ A ) @ ( product_Pair @ A @ A @ A3 @ B3 ) @ R2 )
       => ( member @ A @ A3 @ ( acc @ A @ R2 ) ) ) ) ).

% acc_downward
thf(fact_183_acc_Oinducts,axiom,
    ! [A: $tType,X: A,R2: set @ ( product_prod @ A @ A ),P2: A > $o] :
      ( ( member @ A @ X @ ( acc @ A @ R2 ) )
     => ( ! [X4: A] :
            ( ! [Y4: A] :
                ( ( member @ ( product_prod @ A @ A ) @ ( product_Pair @ A @ A @ Y4 @ X4 ) @ R2 )
               => ( member @ A @ Y4 @ ( acc @ A @ R2 ) ) )
           => ( ! [Y4: A] :
                  ( ( member @ ( product_prod @ A @ A ) @ ( product_Pair @ A @ A @ Y4 @ X4 ) @ R2 )
                 => ( P2 @ Y4 ) )
             => ( P2 @ X4 ) ) )
       => ( P2 @ X ) ) ) ).

% acc.inducts
thf(fact_184_acc__induct,axiom,
    ! [A: $tType,A3: A,R2: set @ ( product_prod @ A @ A ),P2: A > $o] :
      ( ( member @ A @ A3 @ ( acc @ A @ R2 ) )
     => ( ! [X4: A] :
            ( ( member @ A @ X4 @ ( acc @ A @ R2 ) )
           => ( ! [Y4: A] :
                  ( ( member @ ( product_prod @ A @ A ) @ ( product_Pair @ A @ A @ Y4 @ X4 ) @ R2 )
                 => ( P2 @ Y4 ) )
             => ( P2 @ X4 ) ) )
       => ( P2 @ A3 ) ) ) ).

% acc_induct
thf(fact_185_acc_Ointros,axiom,
    ! [A: $tType,X: A,R2: set @ ( product_prod @ A @ A )] :
      ( ! [Y3: A] :
          ( ( member @ ( product_prod @ A @ A ) @ ( product_Pair @ A @ A @ Y3 @ X ) @ R2 )
         => ( member @ A @ Y3 @ ( acc @ A @ R2 ) ) )
     => ( member @ A @ X @ ( acc @ A @ R2 ) ) ) ).

% acc.intros
thf(fact_186_acc_Osimps,axiom,
    ! [A: $tType,A3: A,R2: set @ ( product_prod @ A @ A )] :
      ( ( member @ A @ A3 @ ( acc @ A @ R2 ) )
      = ( ? [X6: A] :
            ( ( A3 = X6 )
            & ! [Y5: A] :
                ( ( member @ ( product_prod @ A @ A ) @ ( product_Pair @ A @ A @ Y5 @ X6 ) @ R2 )
               => ( member @ A @ Y5 @ ( acc @ A @ R2 ) ) ) ) ) ) ).

% acc.simps
thf(fact_187_acc_Ocases,axiom,
    ! [A: $tType,A3: A,R2: set @ ( product_prod @ A @ A )] :
      ( ( member @ A @ A3 @ ( acc @ A @ R2 ) )
     => ! [Y4: A] :
          ( ( member @ ( product_prod @ A @ A ) @ ( product_Pair @ A @ A @ Y4 @ A3 ) @ R2 )
         => ( member @ A @ Y4 @ ( acc @ A @ R2 ) ) ) ) ).

% acc.cases
thf(fact_188_sp_092_060_094sub_062_092_060mu_062_Opred__map,axiom,
    ! [D: $tType,C: $tType,B: $tType,A: $tType,G: $tType,Q1: C > $o,Q23: D > $o,F1: A > C,F22: B > D,X: stream901396144_sp_mu @ G @ A @ B] :
      ( ( stream123009735_sp_mu @ C @ D @ G @ Q1 @ Q23 @ ( stream1058219438_sp_mu @ A @ C @ B @ D @ G @ F1 @ F22 @ X ) )
      = ( stream123009735_sp_mu @ A @ B @ G @ ( comp @ C @ $o @ A @ Q1 @ F1 ) @ ( comp @ D @ $o @ B @ Q23 @ F22 ) @ X ) ) ).

% sp\<^sub>\<mu>.pred_map
thf(fact_189_in__inv__image,axiom,
    ! [A: $tType,B: $tType,X: A,Y: A,R2: set @ ( product_prod @ B @ B ),F2: A > B] :
      ( ( member @ ( product_prod @ A @ A ) @ ( product_Pair @ A @ A @ X @ Y ) @ ( inv_image @ B @ A @ R2 @ F2 ) )
      = ( member @ ( product_prod @ B @ B ) @ ( product_Pair @ B @ B @ ( F2 @ X ) @ ( F2 @ Y ) ) @ R2 ) ) ).

% in_inv_image
thf(fact_190_smap2__szip,axiom,
    ! [A: $tType,C: $tType,B: $tType] :
      ( ( smap2 @ B @ C @ A )
      = ( ^ [F: B > C > A,S1: stream @ B,S22: stream @ C] : ( smap @ ( product_prod @ B @ C ) @ A @ ( product_case_prod @ B @ C @ A @ F ) @ ( szip @ B @ C @ S1 @ S22 ) ) ) ) ).

% smap2_szip
thf(fact_191_case__prodI2_H,axiom,
    ! [A: $tType,B: $tType,C: $tType,P3: product_prod @ A @ B,C3: A > B > C > $o,X: C] :
      ( ! [A4: A,B2: B] :
          ( ( ( product_Pair @ A @ B @ A4 @ B2 )
            = P3 )
         => ( C3 @ A4 @ B2 @ X ) )
     => ( product_case_prod @ A @ B @ ( C > $o ) @ C3 @ P3 @ X ) ) ).

% case_prodI2'
thf(fact_192_mem__case__prodI,axiom,
    ! [A: $tType,B: $tType,C: $tType,Z3: A,C3: B > C > ( set @ A ),A3: B,B3: C] :
      ( ( member @ A @ Z3 @ ( C3 @ A3 @ B3 ) )
     => ( member @ A @ Z3 @ ( product_case_prod @ B @ C @ ( set @ A ) @ C3 @ ( product_Pair @ B @ C @ A3 @ B3 ) ) ) ) ).

% mem_case_prodI
thf(fact_193_mem__case__prodI2,axiom,
    ! [C: $tType,B: $tType,A: $tType,P3: product_prod @ A @ B,Z3: C,C3: A > B > ( set @ C )] :
      ( ! [A4: A,B2: B] :
          ( ( P3
            = ( product_Pair @ A @ B @ A4 @ B2 ) )
         => ( member @ C @ Z3 @ ( C3 @ A4 @ B2 ) ) )
     => ( member @ C @ Z3 @ ( product_case_prod @ A @ B @ ( set @ C ) @ C3 @ P3 ) ) ) ).

% mem_case_prodI2
thf(fact_194_case__prodI2,axiom,
    ! [B: $tType,A: $tType,P3: product_prod @ A @ B,C3: A > B > $o] :
      ( ! [A4: A,B2: B] :
          ( ( P3
            = ( product_Pair @ A @ B @ A4 @ B2 ) )
         => ( C3 @ A4 @ B2 ) )
     => ( product_case_prod @ A @ B @ $o @ C3 @ P3 ) ) ).

% case_prodI2
thf(fact_195_case__prodI,axiom,
    ! [A: $tType,B: $tType,F2: A > B > $o,A3: A,B3: B] :
      ( ( F2 @ A3 @ B3 )
     => ( product_case_prod @ A @ B @ $o @ F2 @ ( product_Pair @ A @ B @ A3 @ B3 ) ) ) ).

% case_prodI
thf(fact_196_case__prod__curry,axiom,
    ! [C: $tType,B: $tType,A: $tType,F2: ( product_prod @ A @ B ) > C] :
      ( ( product_case_prod @ A @ B @ C @ ( product_curry @ A @ B @ C @ F2 ) )
      = F2 ) ).

% case_prod_curry
thf(fact_197_curry__case__prod,axiom,
    ! [C: $tType,B: $tType,A: $tType,F2: A > B > C] :
      ( ( product_curry @ A @ B @ C @ ( product_case_prod @ A @ B @ C @ F2 ) )
      = F2 ) ).

% curry_case_prod
thf(fact_198_case__prod__conv,axiom,
    ! [B: $tType,A: $tType,C: $tType,F2: B > C > A,A3: B,B3: C] :
      ( ( product_case_prod @ B @ C @ A @ F2 @ ( product_Pair @ B @ C @ A3 @ B3 ) )
      = ( F2 @ A3 @ B3 ) ) ).

% case_prod_conv
thf(fact_199_run_092_060_094sub_062_092_060nu_062_Ocode,axiom,
    ! [B: $tType,A: $tType] :
      ( ( stream377071682run_nu @ A @ B )
      = ( ^ [Sp5: stream1273403375_sp_nu @ A @ B,S3: stream @ A] :
            ( product_case_prod @ ( product_prod @ B @ ( stream1273403375_sp_nu @ A @ B ) ) @ ( stream @ A ) @ ( stream @ B )
            @ ( product_case_prod @ B @ ( stream1273403375_sp_nu @ A @ B ) @ ( ( stream @ A ) > ( stream @ B ) )
              @ ^ [H2: B,Sq: stream1273403375_sp_nu @ A @ B,T3: stream @ A] : ( sCons @ B @ H2 @ ( stream377071682run_nu @ A @ B @ Sq @ T3 ) ) )
            @ ( stream5064451run_mu @ A @ B @ ( stream1273403375_sp_nu @ A @ B ) @ ( stream1200245950nu_out @ A @ B @ Sp5 ) @ S3 ) ) ) ) ).

% run\<^sub>\<nu>.code
thf(fact_200_mem__case__prodE,axiom,
    ! [B: $tType,A: $tType,C: $tType,Z3: A,C3: B > C > ( set @ A ),P3: product_prod @ B @ C] :
      ( ( member @ A @ Z3 @ ( product_case_prod @ B @ C @ ( set @ A ) @ C3 @ P3 ) )
     => ~ ! [X4: B,Y3: C] :
            ( ( P3
              = ( product_Pair @ B @ C @ X4 @ Y3 ) )
           => ~ ( member @ A @ Z3 @ ( C3 @ X4 @ Y3 ) ) ) ) ).

% mem_case_prodE
thf(fact_201_old_Oprod_Ocase,axiom,
    ! [A: $tType,C: $tType,B: $tType,F2: A > B > C,X1: A,X2: B] :
      ( ( product_case_prod @ A @ B @ C @ F2 @ ( product_Pair @ A @ B @ X1 @ X2 ) )
      = ( F2 @ X1 @ X2 ) ) ).

% old.prod.case
thf(fact_202_sp_092_060_094sub_062_092_060mu_062_Osimps_I10_J,axiom,
    ! [B: $tType,E: $tType,A: $tType,F4: $tType,C: $tType,F1: B > E,F22: C > F4,X21: B,X22: C] :
      ( ( stream1058219438_sp_mu @ B @ E @ C @ F4 @ A @ F1 @ F22 @ ( stream1370332830mu_Put @ B @ C @ A @ X21 @ X22 ) )
      = ( stream1370332830mu_Put @ E @ F4 @ A @ ( F1 @ X21 ) @ ( F22 @ X22 ) ) ) ).

% sp\<^sub>\<mu>.simps(10)
thf(fact_203_inv__image__def,axiom,
    ! [A: $tType,B: $tType] :
      ( ( inv_image @ B @ A )
      = ( ^ [R3: set @ ( product_prod @ B @ B ),F: A > B] :
            ( collect @ ( product_prod @ A @ A )
            @ ( product_case_prod @ A @ A @ $o
              @ ^ [X6: A,Y5: A] : ( member @ ( product_prod @ B @ B ) @ ( product_Pair @ B @ B @ ( F @ X6 ) @ ( F @ Y5 ) ) @ R3 ) ) ) ) ) ).

% inv_image_def
thf(fact_204_same__fst__def,axiom,
    ! [B: $tType,A: $tType] :
      ( ( same_fst @ A @ B )
      = ( ^ [P: A > $o,R4: A > ( set @ ( product_prod @ B @ B ) )] :
            ( collect @ ( product_prod @ ( product_prod @ A @ B ) @ ( product_prod @ A @ B ) )
            @ ( product_case_prod @ ( product_prod @ A @ B ) @ ( product_prod @ A @ B ) @ $o
              @ ( product_case_prod @ A @ B @ ( ( product_prod @ A @ B ) > $o )
                @ ^ [X8: A,Y7: B] :
                    ( product_case_prod @ A @ B @ $o
                    @ ^ [X6: A,Y5: B] :
                        ( ( X8 = X6 )
                        & ( P @ X6 )
                        & ( member @ ( product_prod @ B @ B ) @ ( product_Pair @ B @ B @ Y7 @ Y5 ) @ ( R4 @ X6 ) ) ) ) ) ) ) ) ) ).

% same_fst_def
thf(fact_205_cond__case__prod__eta,axiom,
    ! [C: $tType,B: $tType,A: $tType,F2: A > B > C,G3: ( product_prod @ A @ B ) > C] :
      ( ! [X4: A,Y3: B] :
          ( ( F2 @ X4 @ Y3 )
          = ( G3 @ ( product_Pair @ A @ B @ X4 @ Y3 ) ) )
     => ( ( product_case_prod @ A @ B @ C @ F2 )
        = G3 ) ) ).

% cond_case_prod_eta
thf(fact_206_case__prod__eta,axiom,
    ! [C: $tType,B: $tType,A: $tType,F2: ( product_prod @ A @ B ) > C] :
      ( ( product_case_prod @ A @ B @ C
        @ ^ [X6: A,Y5: B] : ( F2 @ ( product_Pair @ A @ B @ X6 @ Y5 ) ) )
      = F2 ) ).

% case_prod_eta
thf(fact_207_case__prodE2,axiom,
    ! [B: $tType,A: $tType,C: $tType,Q: A > $o,P2: B > C > A,Z3: product_prod @ B @ C] :
      ( ( Q @ ( product_case_prod @ B @ C @ A @ P2 @ Z3 ) )
     => ~ ! [X4: B,Y3: C] :
            ( ( Z3
              = ( product_Pair @ B @ C @ X4 @ Y3 ) )
           => ~ ( Q @ ( P2 @ X4 @ Y3 ) ) ) ) ).

% case_prodE2
thf(fact_208_prod_Ocase__distrib,axiom,
    ! [C: $tType,D: $tType,B: $tType,A: $tType,H: C > D,F2: A > B > C,Prod: product_prod @ A @ B] :
      ( ( H @ ( product_case_prod @ A @ B @ C @ F2 @ Prod ) )
      = ( product_case_prod @ A @ B @ D
        @ ^ [X13: A,X24: B] : ( H @ ( F2 @ X13 @ X24 ) )
        @ Prod ) ) ).

% prod.case_distrib
thf(fact_209_sp_092_060_094sub_062_092_060mu_062_Omap__ident,axiom,
    ! [B: $tType,A: $tType,G: $tType,T2: stream901396144_sp_mu @ G @ A @ B] :
      ( ( stream1058219438_sp_mu @ A @ A @ B @ B @ G
        @ ^ [X6: A] : X6
        @ ^ [X6: B] : X6
        @ T2 )
      = T2 ) ).

% sp\<^sub>\<mu>.map_ident
thf(fact_210_case__prodE_H,axiom,
    ! [B: $tType,A: $tType,C: $tType,C3: A > B > C > $o,P3: product_prod @ A @ B,Z3: C] :
      ( ( product_case_prod @ A @ B @ ( C > $o ) @ C3 @ P3 @ Z3 )
     => ~ ! [X4: A,Y3: B] :
            ( ( P3
              = ( product_Pair @ A @ B @ X4 @ Y3 ) )
           => ~ ( C3 @ X4 @ Y3 @ Z3 ) ) ) ).

% case_prodE'
thf(fact_211_case__prodD_H,axiom,
    ! [B: $tType,A: $tType,C: $tType,R: A > B > C > $o,A3: A,B3: B,C3: C] :
      ( ( product_case_prod @ A @ B @ ( C > $o ) @ R @ ( product_Pair @ A @ B @ A3 @ B3 ) @ C3 )
     => ( R @ A3 @ B3 @ C3 ) ) ).

% case_prodD'
thf(fact_212_sp_092_060_094sub_062_092_060mu_062_Osimps_I9_J,axiom,
    ! [F4: $tType,E: $tType,C: $tType,B: $tType,A: $tType,F1: B > E,F22: C > F4,X1: A > ( stream901396144_sp_mu @ A @ B @ C )] :
      ( ( stream1058219438_sp_mu @ B @ E @ C @ F4 @ A @ F1 @ F22 @ ( stream1294929701mu_Get @ A @ B @ C @ X1 ) )
      = ( stream1294929701mu_Get @ A @ E @ F4 @ ( comp @ ( stream901396144_sp_mu @ A @ B @ C ) @ ( stream901396144_sp_mu @ A @ E @ F4 ) @ A @ ( stream1058219438_sp_mu @ B @ E @ C @ F4 @ A @ F1 @ F22 ) @ X1 ) ) ) ).

% sp\<^sub>\<mu>.simps(9)
thf(fact_213_sp_092_060_094sub_062_092_060mu_062_Omap__comp,axiom,
    ! [D: $tType,F4: $tType,E: $tType,C: $tType,B: $tType,A: $tType,G: $tType,G1: C > E,G23: D > F4,F1: A > C,F22: B > D,V: stream901396144_sp_mu @ G @ A @ B] :
      ( ( stream1058219438_sp_mu @ C @ E @ D @ F4 @ G @ G1 @ G23 @ ( stream1058219438_sp_mu @ A @ C @ B @ D @ G @ F1 @ F22 @ V ) )
      = ( stream1058219438_sp_mu @ A @ E @ B @ F4 @ G @ ( comp @ C @ E @ A @ G1 @ F1 ) @ ( comp @ D @ F4 @ B @ G23 @ F22 ) @ V ) ) ).

% sp\<^sub>\<mu>.map_comp
thf(fact_214_case__prodE,axiom,
    ! [A: $tType,B: $tType,C3: A > B > $o,P3: product_prod @ A @ B] :
      ( ( product_case_prod @ A @ B @ $o @ C3 @ P3 )
     => ~ ! [X4: A,Y3: B] :
            ( ( P3
              = ( product_Pair @ A @ B @ X4 @ Y3 ) )
           => ~ ( C3 @ X4 @ Y3 ) ) ) ).

% case_prodE
thf(fact_215_case__prodD,axiom,
    ! [A: $tType,B: $tType,F2: A > B > $o,A3: A,B3: B] :
      ( ( product_case_prod @ A @ B @ $o @ F2 @ ( product_Pair @ A @ B @ A3 @ B3 ) )
     => ( F2 @ A3 @ B3 ) ) ).

% case_prodD
thf(fact_216_split__cong,axiom,
    ! [C: $tType,B: $tType,A: $tType,Q3: product_prod @ A @ B,F2: A > B > C,G3: A > B > C,P3: product_prod @ A @ B] :
      ( ! [X4: A,Y3: B] :
          ( ( ( product_Pair @ A @ B @ X4 @ Y3 )
            = Q3 )
         => ( ( F2 @ X4 @ Y3 )
            = ( G3 @ X4 @ Y3 ) ) )
     => ( ( P3 = Q3 )
       => ( ( product_case_prod @ A @ B @ C @ F2 @ P3 )
          = ( product_case_prod @ A @ B @ C @ G3 @ Q3 ) ) ) ) ).

% split_cong
thf(fact_217_lex__prod__def,axiom,
    ! [B: $tType,A: $tType] :
      ( ( lex_prod @ A @ B )
      = ( ^ [Ra: set @ ( product_prod @ A @ A ),Rb: set @ ( product_prod @ B @ B )] :
            ( collect @ ( product_prod @ ( product_prod @ A @ B ) @ ( product_prod @ A @ B ) )
            @ ( product_case_prod @ ( product_prod @ A @ B ) @ ( product_prod @ A @ B ) @ $o
              @ ( product_case_prod @ A @ B @ ( ( product_prod @ A @ B ) > $o )
                @ ^ [A5: A,B7: B] :
                    ( product_case_prod @ A @ B @ $o
                    @ ^ [A9: A,B8: B] :
                        ( ( member @ ( product_prod @ A @ A ) @ ( product_Pair @ A @ A @ A5 @ A9 ) @ Ra )
                        | ( ( A5 = A9 )
                          & ( member @ ( product_prod @ B @ B ) @ ( product_Pair @ B @ B @ B7 @ B8 ) @ Rb ) ) ) ) ) ) ) ) ) ).

% lex_prod_def
thf(fact_218_case__prod__Pair__iden,axiom,
    ! [B: $tType,A: $tType,P3: product_prod @ A @ B] :
      ( ( product_case_prod @ A @ B @ ( product_prod @ A @ B ) @ ( product_Pair @ A @ B ) @ P3 )
      = P3 ) ).

% case_prod_Pair_iden
thf(fact_219_case__prod__app,axiom,
    ! [A: $tType,D: $tType,C: $tType,B: $tType] :
      ( ( product_case_prod @ B @ C @ ( D > A ) )
      = ( ^ [F: B > C > D > A,X6: product_prod @ B @ C,Y5: D] :
            ( product_case_prod @ B @ C @ A
            @ ^ [L3: B,R3: C] : ( F @ L3 @ R3 @ Y5 )
            @ X6 ) ) ) ).

% case_prod_app
thf(fact_220_sp_092_060_094sub_062_092_060mu_062_Omap__cong__pred,axiom,
    ! [D: $tType,C: $tType,B: $tType,A: $tType,G: $tType,X: stream901396144_sp_mu @ G @ A @ B,Ya: stream901396144_sp_mu @ G @ A @ B,F1: A > C,G1: A > C,F22: B > D,G23: B > D] :
      ( ( X = Ya )
     => ( ( stream123009735_sp_mu @ A @ B @ G
          @ ^ [Z1: A] :
              ( ( F1 @ Z1 )
              = ( G1 @ Z1 ) )
          @ ^ [Z22: B] :
              ( ( F22 @ Z22 )
              = ( G23 @ Z22 ) )
          @ Ya )
       => ( ( stream1058219438_sp_mu @ A @ C @ B @ D @ G @ F1 @ F22 @ X )
          = ( stream1058219438_sp_mu @ A @ C @ B @ D @ G @ G1 @ G23 @ Ya ) ) ) ) ).

% sp\<^sub>\<mu>.map_cong_pred
thf(fact_221_internal__case__prod__def,axiom,
    ! [C: $tType,B: $tType,A: $tType] :
      ( ( produc2004651681e_prod @ A @ B @ C )
      = ( product_case_prod @ A @ B @ C ) ) ).

% internal_case_prod_def
thf(fact_222_accp__eq__acc,axiom,
    ! [A: $tType] :
      ( ( accp @ A )
      = ( ^ [R3: A > A > $o,X6: A] : ( member @ A @ X6 @ ( acc @ A @ ( collect @ ( product_prod @ A @ A ) @ ( product_case_prod @ A @ A @ $o @ R3 ) ) ) ) ) ) ).

% accp_eq_acc
thf(fact_223_rp__inv__image__def,axiom,
    ! [B: $tType,A: $tType] :
      ( ( fun_rp_inv_image @ A @ B )
      = ( product_case_prod @ ( set @ ( product_prod @ A @ A ) ) @ ( set @ ( product_prod @ A @ A ) ) @ ( ( B > A ) > ( product_prod @ ( set @ ( product_prod @ B @ B ) ) @ ( set @ ( product_prod @ B @ B ) ) ) )
        @ ^ [R4: set @ ( product_prod @ A @ A ),S7: set @ ( product_prod @ A @ A ),F: B > A] : ( product_Pair @ ( set @ ( product_prod @ B @ B ) ) @ ( set @ ( product_prod @ B @ B ) ) @ ( inv_image @ A @ B @ R4 @ F ) @ ( inv_image @ A @ B @ S7 @ F ) ) ) ) ).

% rp_inv_image_def
thf(fact_224_smap__szip__fst,axiom,
    ! [C: $tType,A: $tType,B: $tType,F2: B > A,S12: stream @ B,S23: stream @ C] :
      ( ( smap @ ( product_prod @ B @ C ) @ A
        @ ^ [X6: product_prod @ B @ C] : ( F2 @ ( product_fst @ B @ C @ X6 ) )
        @ ( szip @ B @ C @ S12 @ S23 ) )
      = ( smap @ B @ A @ F2 @ S12 ) ) ).

% smap_szip_fst
thf(fact_225_split__part,axiom,
    ! [B: $tType,A: $tType,P2: $o,Q: A > B > $o] :
      ( ( product_case_prod @ A @ B @ $o
        @ ^ [A5: A,B7: B] :
            ( P2
            & ( Q @ A5 @ B7 ) ) )
      = ( ^ [Ab: product_prod @ A @ B] :
            ( P2
            & ( product_case_prod @ A @ B @ $o @ Q @ Ab ) ) ) ) ).

% split_part
thf(fact_226_fst__def,axiom,
    ! [B: $tType,A: $tType] :
      ( ( product_fst @ A @ B )
      = ( product_case_prod @ A @ B @ A
        @ ^ [X13: A,X24: B] : X13 ) ) ).

% fst_def
thf(fact_227_prod_Odisc__eq__case,axiom,
    ! [B: $tType,A: $tType,Prod: product_prod @ A @ B] :
      ( product_case_prod @ A @ B @ $o
      @ ^ [Uu: A,Uv: B] : $true
      @ Prod ) ).

% prod.disc_eq_case
thf(fact_228_run_092_060_094sub_062_092_060nu_062_Osimps_I1_J,axiom,
    ! [B: $tType,A: $tType,Sp3: stream1273403375_sp_nu @ A @ B,S: stream @ A] :
      ( ( shd @ B @ ( stream377071682run_nu @ A @ B @ Sp3 @ S ) )
      = ( product_fst @ B @ ( stream1273403375_sp_nu @ A @ B ) @ ( product_fst @ ( product_prod @ B @ ( stream1273403375_sp_nu @ A @ B ) ) @ ( stream @ A ) @ ( stream5064451run_mu @ A @ B @ ( stream1273403375_sp_nu @ A @ B ) @ ( stream1200245950nu_out @ A @ B @ Sp3 ) @ S ) ) ) ) ).

% run\<^sub>\<nu>.simps(1)
thf(fact_229_fst__conv,axiom,
    ! [B: $tType,A: $tType,X1: A,X2: B] :
      ( ( product_fst @ A @ B @ ( product_Pair @ A @ B @ X1 @ X2 ) )
      = X1 ) ).

% fst_conv
thf(fact_230_fst__eqD,axiom,
    ! [B: $tType,A: $tType,X: A,Y: B,A3: A] :
      ( ( ( product_fst @ A @ B @ ( product_Pair @ A @ B @ X @ Y ) )
        = A3 )
     => ( X = A3 ) ) ).

% fst_eqD
thf(fact_231_fstI,axiom,
    ! [B: $tType,A: $tType,X: product_prod @ A @ B,Y: A,Z3: B] :
      ( ( X
        = ( product_Pair @ A @ B @ Y @ Z3 ) )
     => ( ( product_fst @ A @ B @ X )
        = Y ) ) ).

% fstI
thf(fact_232_fst__convol,axiom,
    ! [C: $tType,B: $tType,A: $tType,F2: A > B,G3: A > C] :
      ( ( comp @ ( product_prod @ B @ C ) @ B @ A @ ( product_fst @ B @ C ) @ ( bNF_convol @ A @ B @ C @ F2 @ G3 ) )
      = F2 ) ).

% fst_convol
thf(fact_233_fst__diag__fst,axiom,
    ! [B: $tType,A: $tType] :
      ( ( comp @ ( product_prod @ A @ A ) @ A @ ( product_prod @ A @ B ) @ ( product_fst @ A @ A )
        @ ( comp @ A @ ( product_prod @ A @ A ) @ ( product_prod @ A @ B )
          @ ^ [X6: A] : ( product_Pair @ A @ A @ X6 @ X6 )
          @ ( product_fst @ A @ B ) ) )
      = ( product_fst @ A @ B ) ) ).

% fst_diag_fst
thf(fact_234_eq__fst__iff,axiom,
    ! [A: $tType,B: $tType,A3: A,P3: product_prod @ A @ B] :
      ( ( A3
        = ( product_fst @ A @ B @ P3 ) )
      = ( ? [B7: B] :
            ( P3
            = ( product_Pair @ A @ B @ A3 @ B7 ) ) ) ) ).

% eq_fst_iff
thf(fact_235_fst__fstOp,axiom,
    ! [A: $tType,B: $tType,C: $tType,P2: A > C > $o,Q: C > B > $o] :
      ( ( product_fst @ A @ B )
      = ( comp @ ( product_prod @ A @ C ) @ A @ ( product_prod @ A @ B ) @ ( product_fst @ A @ C ) @ ( bNF_fstOp @ A @ C @ B @ P2 @ Q ) ) ) ).

% fst_fstOp
thf(fact_236_fst__comp__apfst,axiom,
    ! [C: $tType,B: $tType,A: $tType,F2: A > C] :
      ( ( comp @ ( product_prod @ C @ B ) @ C @ ( product_prod @ A @ B ) @ ( product_fst @ C @ B ) @ ( product_apfst @ A @ C @ B @ F2 ) )
      = ( comp @ A @ C @ ( product_prod @ A @ B ) @ F2 @ ( product_fst @ A @ B ) ) ) ).

% fst_comp_apfst
thf(fact_237_apfst__conv,axiom,
    ! [C: $tType,A: $tType,B: $tType,F2: C > A,X: C,Y: B] :
      ( ( product_apfst @ C @ A @ B @ F2 @ ( product_Pair @ C @ B @ X @ Y ) )
      = ( product_Pair @ A @ B @ ( F2 @ X ) @ Y ) ) ).

% apfst_conv
thf(fact_238_apfst__eq__conv,axiom,
    ! [A: $tType,B: $tType,C: $tType,F2: C > A,X: product_prod @ C @ B,G3: C > A] :
      ( ( ( product_apfst @ C @ A @ B @ F2 @ X )
        = ( product_apfst @ C @ A @ B @ G3 @ X ) )
      = ( ( F2 @ ( product_fst @ C @ B @ X ) )
        = ( G3 @ ( product_fst @ C @ B @ X ) ) ) ) ).

% apfst_eq_conv
thf(fact_239_fst__apfst,axiom,
    ! [A: $tType,B: $tType,C: $tType,F2: C > A,X: product_prod @ C @ B] :
      ( ( product_fst @ A @ B @ ( product_apfst @ C @ A @ B @ F2 @ X ) )
      = ( F2 @ ( product_fst @ C @ B @ X ) ) ) ).

% fst_apfst
thf(fact_240_apfst__compose,axiom,
    ! [C: $tType,A: $tType,B: $tType,D: $tType,F2: C > A,G3: D > C,X: product_prod @ D @ B] :
      ( ( product_apfst @ C @ A @ B @ F2 @ ( product_apfst @ D @ C @ B @ G3 @ X ) )
      = ( product_apfst @ D @ A @ B @ ( comp @ C @ A @ D @ F2 @ G3 ) @ X ) ) ).

% apfst_compose
thf(fact_241_fst__diag__snd,axiom,
    ! [B: $tType,A: $tType] :
      ( ( comp @ ( product_prod @ B @ B ) @ B @ ( product_prod @ A @ B ) @ ( product_fst @ B @ B )
        @ ( comp @ B @ ( product_prod @ B @ B ) @ ( product_prod @ A @ B )
          @ ^ [X6: B] : ( product_Pair @ B @ B @ X6 @ X6 )
          @ ( product_snd @ A @ B ) ) )
      = ( product_snd @ A @ B ) ) ).

% fst_diag_snd
thf(fact_242_snd__diag__fst,axiom,
    ! [B: $tType,A: $tType] :
      ( ( comp @ ( product_prod @ A @ A ) @ A @ ( product_prod @ A @ B ) @ ( product_snd @ A @ A )
        @ ( comp @ A @ ( product_prod @ A @ A ) @ ( product_prod @ A @ B )
          @ ^ [X6: A] : ( product_Pair @ A @ A @ X6 @ X6 )
          @ ( product_fst @ A @ B ) ) )
      = ( product_fst @ A @ B ) ) ).

% snd_diag_fst
thf(fact_243_snd__apfst,axiom,
    ! [B: $tType,A: $tType,C: $tType,F2: C > B,X: product_prod @ C @ A] :
      ( ( product_snd @ B @ A @ ( product_apfst @ C @ B @ A @ F2 @ X ) )
      = ( product_snd @ C @ A @ X ) ) ).

% snd_apfst
thf(fact_244_prod_Ocollapse,axiom,
    ! [B: $tType,A: $tType,Prod: product_prod @ A @ B] :
      ( ( product_Pair @ A @ B @ ( product_fst @ A @ B @ Prod ) @ ( product_snd @ A @ B @ Prod ) )
      = Prod ) ).

% prod.collapse
thf(fact_245_snd__comp__apfst,axiom,
    ! [C: $tType,B: $tType,A: $tType,F2: A > C] :
      ( ( comp @ ( product_prod @ C @ B ) @ B @ ( product_prod @ A @ B ) @ ( product_snd @ C @ B ) @ ( product_apfst @ A @ C @ B @ F2 ) )
      = ( product_snd @ A @ B ) ) ).

% snd_comp_apfst
thf(fact_246_case__prod__comp,axiom,
    ! [D: $tType,A: $tType,C: $tType,B: $tType,F2: D > C > A,G3: B > D,X: product_prod @ B @ C] :
      ( ( product_case_prod @ B @ C @ A @ ( comp @ D @ ( C > A ) @ B @ F2 @ G3 ) @ X )
      = ( F2 @ ( G3 @ ( product_fst @ B @ C @ X ) ) @ ( product_snd @ B @ C @ X ) ) ) ).

% case_prod_comp
thf(fact_247_snd__convol,axiom,
    ! [C: $tType,B: $tType,A: $tType,F2: A > C,G3: A > B] :
      ( ( comp @ ( product_prod @ C @ B ) @ B @ A @ ( product_snd @ C @ B ) @ ( bNF_convol @ A @ C @ B @ F2 @ G3 ) )
      = G3 ) ).

% snd_convol
thf(fact_248_snd__def,axiom,
    ! [B: $tType,A: $tType] :
      ( ( product_snd @ A @ B )
      = ( product_case_prod @ A @ B @ B
        @ ^ [X13: A,X24: B] : X24 ) ) ).

% snd_def
thf(fact_249_snd__conv,axiom,
    ! [Aa: $tType,A: $tType,X1: Aa,X2: A] :
      ( ( product_snd @ Aa @ A @ ( product_Pair @ Aa @ A @ X1 @ X2 ) )
      = X2 ) ).

% snd_conv
thf(fact_250_snd__eqD,axiom,
    ! [B: $tType,A: $tType,X: B,Y: A,A3: A] :
      ( ( ( product_snd @ B @ A @ ( product_Pair @ B @ A @ X @ Y ) )
        = A3 )
     => ( Y = A3 ) ) ).

% snd_eqD
thf(fact_251_sndI,axiom,
    ! [A: $tType,B: $tType,X: product_prod @ A @ B,Y: A,Z3: B] :
      ( ( X
        = ( product_Pair @ A @ B @ Y @ Z3 ) )
     => ( ( product_snd @ A @ B @ X )
        = Z3 ) ) ).

% sndI
thf(fact_252_prod_Osplit__sel__asm,axiom,
    ! [C: $tType,B: $tType,A: $tType,P2: C > $o,F2: A > B > C,Prod: product_prod @ A @ B] :
      ( ( P2 @ ( product_case_prod @ A @ B @ C @ F2 @ Prod ) )
      = ( ~ ( ( Prod
              = ( product_Pair @ A @ B @ ( product_fst @ A @ B @ Prod ) @ ( product_snd @ A @ B @ Prod ) ) )
            & ~ ( P2 @ ( F2 @ ( product_fst @ A @ B @ Prod ) @ ( product_snd @ A @ B @ Prod ) ) ) ) ) ) ).

% prod.split_sel_asm
thf(fact_253_prod_Osplit__sel,axiom,
    ! [C: $tType,B: $tType,A: $tType,P2: C > $o,F2: A > B > C,Prod: product_prod @ A @ B] :
      ( ( P2 @ ( product_case_prod @ A @ B @ C @ F2 @ Prod ) )
      = ( ( Prod
          = ( product_Pair @ A @ B @ ( product_fst @ A @ B @ Prod ) @ ( product_snd @ A @ B @ Prod ) ) )
       => ( P2 @ ( F2 @ ( product_fst @ A @ B @ Prod ) @ ( product_snd @ A @ B @ Prod ) ) ) ) ) ).

% prod.split_sel
thf(fact_254_BNF__Greatest__Fixpoint_Osubst__Pair,axiom,
    ! [B: $tType,A: $tType,P2: A > B > $o,X: A,Y: B,A3: product_prod @ A @ B] :
      ( ( P2 @ X @ Y )
     => ( ( A3
          = ( product_Pair @ A @ B @ X @ Y ) )
       => ( P2 @ ( product_fst @ A @ B @ A3 ) @ ( product_snd @ A @ B @ A3 ) ) ) ) ).

% BNF_Greatest_Fixpoint.subst_Pair
thf(fact_255_surjective__pairing,axiom,
    ! [B: $tType,A: $tType,T2: product_prod @ A @ B] :
      ( T2
      = ( product_Pair @ A @ B @ ( product_fst @ A @ B @ T2 ) @ ( product_snd @ A @ B @ T2 ) ) ) ).

% surjective_pairing

%----Helper facts (3)
thf(help_If_3_1_T,axiom,
    ! [P2: $o] :
      ( ( P2 = $true )
      | ( P2 = $false ) ) ).

thf(help_If_2_1_T,axiom,
    ! [A: $tType,X: A,Y: A] :
      ( ( if @ A @ $false @ X @ Y )
      = Y ) ).

thf(help_If_1_1_T,axiom,
    ! [A: $tType,X: A,Y: A] :
      ( ( if @ A @ $true @ X @ Y )
      = X ) ).

%----Conjectures (1)
thf(conj_0,conjecture,
    ( ( ( shd @ b @ ( stream377071682run_nu @ a @ b @ ( stream1967106959u_comp @ c @ b @ a @ spb @ sp_b ) @ sb ) )
      = ( shd @ b @ ( stream377071682run_nu @ c @ b @ spb @ ( stream377071682run_nu @ a @ c @ sp_b @ sb ) ) ) )
    & ? [Sp6: stream1273403375_sp_nu @ c @ b,Sp7: stream1273403375_sp_nu @ a @ c,S4: stream @ a] :
        ( ( ( stl @ b @ ( stream377071682run_nu @ a @ b @ ( stream1967106959u_comp @ c @ b @ a @ spb @ sp_b ) @ sb ) )
          = ( stream377071682run_nu @ a @ b @ ( stream1967106959u_comp @ c @ b @ a @ Sp6 @ Sp7 ) @ S4 ) )
        & ( ( stl @ b @ ( stream377071682run_nu @ c @ b @ spb @ ( stream377071682run_nu @ a @ c @ sp_b @ sb ) ) )
          = ( stream377071682run_nu @ c @ b @ Sp6 @ ( stream377071682run_nu @ a @ c @ Sp7 @ S4 ) ) ) ) ) ).

%------------------------------------------------------------------------------